本文实例讲述了python matplotlib模块基本图形绘制方法。分享给大家供大家参考,具体如下:
matplotlib模块是python中一个强大的绘图模块
安装 pip install matplotlib
首先我们来画一个简单的图来感受它的神奇
import numpy as np import matplotlib.pyplot as plt import matplotlib zhfont1=matplotlib.font_manager.FontProperties(fname="SimHei.ttf") #-------设置字体,这个可以事先下载https://www.fontpalace.com/font-details/SimHei/
x=np.arange(1,11,1) #-------从数字1到11,步长为1 y=2 * x +5
plt.title("我是标题",fontproperties=zhfont1) #--------设置标题 plt.xlabel("x坐标标题",fontproperties=zhfont1) #---------设置x坐标名称 plt.ylabel("y坐标标题",fontproperties=zhfont1) #---------设置y坐标名称 plt.plot(x,y) #---------开始绘制 plt.plot(x,y,":r") 表示使用虚线红颜色绘制
plt.show() #---------显示图形
下面是简单的图形
2 一个图片上绘制多个子图:subplot
import numpy as np import matplotlib.pyplot as plt import matplotlib zhfont1=matplotlib.font_manager.FontProperties(fname="SimHei.ttf") # 计算正弦和余弦曲线上的点的 x 和 y 坐标 x = np.arange(0, 3 * np.pi, 0.1) y_sin = np.sin(x) y_cos = np.cos(x) # 激活第一个 subplot plt.subplot(2, 2, 1) # 绘制第一个图像 plt.plot(x, y_sin) plt.title('Sine-坐标图1',fontproperties=zhfont1) plt.xlabel('x1') plt.ylabel('y1')
# 将第二个 subplot 激活,并绘制第二个图像 plt.subplot(2, 2, 2) plt.plot(x, y_cos) plt.title('Cosine-坐标图2',fontproperties=zhfont1) plt.xlabel('x2') plt.ylabel('y2') # 展示图像 plt.show()
图形如下
说明:从上图我们可以看到出现了两个子图
plt.subplot用来激活子图,plt.subplot('x坐标分成几个','y坐标分成几个','本身是第几个'): x*y就是把图片分成几个平等位置,最后的参数表示放在哪个位置,位置表示如下,从左到右,从上到下
1 2
3 4
如果要让上面的图对角表示呢,
修改为
plt.subplot(2, 2, 1)
plt.subplot(2, 2, 4)
3 绘制直方图
import numpy as np import matplotlib.pyplot as plt import matplotlib #zhfont1=matplotlib.font_manager.FontProperties(fname="SimHei.ttf") plt.rcParams['font.family']='SimHei' x=[0,1,2,3,4] y=[20, 10, 30, 25, 15] str1 = ("北京", "上海", "武汉", "深圳", "重庆") plt.bar(x,height=y,width=0.5,label="城市工资",tick_label=str1) # tick_label要显示的名称 # for a, b in zip(x, y): # plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=10) #分别按照坐标给出数据标签 plt.text(0,20+0.05,20,ha='center', va='bottom', fontsize=10) #简单说(x位置,y位置+0.05,要显示的数据,水平中心对齐,垂直底部对齐,字体大小) plt.text(1,10+0.05,10,ha='center', va='bottom', fontsize=10) plt.text(2,30+0.05,30,ha='center', va='bottom', fontsize=10) plt.text(3,25+0.05,25,ha='center', va='bottom', fontsize=10) plt.text(4,15+0.05,15,ha='center', va='bottom', fontsize=10) plt.legend() #用来显示label标签的内容 plt.show()
下面显示图形
4 绘制条形图(直方图的一种)
import numpy as np import matplotlib.pyplot as plt import matplotlib #zhfont1=matplotlib.font_manager.FontProperties(fname="SimHei.ttf") plt.rcParams['font.family']='SimHei' x_label=['2015', '2016', '2017','2018','2019'] #横坐标刻度显示 y1=[20, 10, 30, 25, 15] #纵坐标值 y2=[15, 15, 30, 40, 20] y3=[23, 35, 40, 25, 20] x=range(len(y1)) str1 = ("北京", "上海", "武汉")
#调整x和height的大小可以改变条形图的间距和两个年份的图形间距 rect1=plt.bar(x,height=y1,width=0.25,label="北京",color='red',alpha=0.8) rect2=plt.bar([i+0.25 for i in x],height=y2,width=0.25,label="上海",color='green',alpha=0.8) rect3=plt.bar([i+0.5 for i in x],height=y3,width=0.25,label="武汉",color='blue',alpha=0.8) plt.title('某公司') plt.xlabel('年份') plt.xticks([index +0.25 for index in x],x_label) #直接调整了x刻度名称的位置 plt.ylabel('数量') for rect in rect1: #设置显示数据内容 # print(type(rect)) #<class 'matplotlib.patches.Rectangle'> # print(rect) #Rectangle(xy=(-0.15, 0), width=0.3, height=20, angle=0) height=rect.get_height() plt.text(rect.get_x() + rect.get_width() / 2, height + 0.5, str(height), ha="center", va="bottom") for rect in rect2: height=rect.get_height() plt.text(rect.get_x() + rect.get_width() / 2, height + 0.5, str(height), ha="center", va="bottom") for rect in rect3: height=rect.get_height() plt.text(rect.get_x() + rect.get_width() / 2, height + 0.5, str(height), ha="center", va="bottom") plt.legend() plt.show()
结果看下图
5 饼图绘制
import matplotlib.pyplot as plt import matplotlib plt.rcParams['font.sans-serif']=['SimHei']#将图表内容字体设置为黑体,可以正常显示中文 ratios=[0.1,0.2,0.15,0.15,0.4]#存放比例列表,相加等于1 colors=['peru','coral','salmon','yellow','grey']#存放颜色列表,与比例相匹配 labels=["流行",'classic','pop','纯音乐','blue']#存放各类元素标签 explode=(0,0.1,0,0,0.1) #大于0的表示突出的比例,负值表示往里缩 plt.pie(ratios,explode=explode,colors=colors,labels=labels)#绘制饼图 (比例列表,突出列表,颜色列表,标签列表) plt.title('歌单音乐种类百分比') plt.axis('equal')#将饼图显示为正圆形 plt.show()
图形如下:
最后,此篇博客总结
1 字体可以使用自己下载的 zhfont1=matplotlib.font_manager.FontProperties(fname="SimHei.ttf")
也可以使用系统的 plt.rcParams['font.family']='SimHei'
2 三要素,标题:plt.title
x座标 plt.xlabel
y坐标 plt.ylabel
3 绘制子图使用 plt.subplot
4 绘制数据标签:plt.text
5 图形显示 plt.show()
6 最后没说的 plt.savefig('路径/名称.png')
7 想让x坐标的文字倾斜45度: plt.xticks(rotation=45)
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]