作者简介: 苏凉(在python路上)
博客主页: 苏凉.py的博客
名言警句: 海阔凭鱼跃,天高任鸟飞。
要是觉得博主文章写的不错的话,还望大家三连支持一下呀!!!
关注✨点赞收藏
在上一篇matplotlib的基础绘图中我们学习了以下内容:
1.绘制折线图(plt.plot)
2.设置图片的大小和分辨率(plt.figure)
3.实现了图片的保存(plt.savefig)
4.设置xy轴上的刻度和字符串(xticks,yticks)
5.解决了刻度系数和密集的问题(xticks,yticks)
6.设置了xy轴以及标题的描述(xlable,ylable,title)
7.设置了中文显示(font_manager,fontproperties)
8.设置折线图线条的样式(color,linestyle,linewidth,alpha)
9.添加水印(fig.text())
详情可以点击上面链接回顾呀!!
在本篇文章中我们将利用以上知识点来学习如何利用matplotlib来绘制散点图,条形图,直方图
实例:
题目:绘制5月份和10月份的温度变化图(散点图)温度数据如下:
5月[[11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,24,25,26
] 10月[[26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,9,10,8,6
]
若想在图片中显示中文,那么我们需要在前面设置字体
my_font = font_manager.FontProperties(fname='./msyh.ttc')
plt.figure(figsize=(20,8),dpi=80)
这里一个月为31天,为了不重复这里10月份的需要设置为41-72。赋值时减去40即可。
x_5 = range(1,32)
x_10 = range (41,72)
y_5 = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,24,25,26]
y_10 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,9,10,8,6]
在上篇中我们提到的折线图用的是plot方法,而我们要绘制散点图时则需要用到scatter的方法。
plt.scatter(x_5,y_5,label = '5月份')
plt.scatter(x_10,y_10,label = '10月份')
plt.legend(loc= "upper left", prop = my_font)
plt.xlabel('时间',fontproperties = my_font)
plt.ylabel('温度',fontproperties = my_font)
plt.title('5月和10月气温变化散点图',fontproperties = my_font)
x_totle =list(x_5) + list(x_10)
x_ticks_label = ['5月{}日'.format(i) for i in x_5]
x_ticks_label += ['10月{}日'.format(i-40) for i in x_10]
# rotation设置描述信息的倾斜角度
plt.xticks(x_totle[::1],x_ticks_label[::1],fontproperties = my_font,rotation = 45)
plt.text(
x = 25.5,y= 15,
s = '苏凉.py' ,fontproperties = my_font,
color = 'b' ,fontsize = 40,
ha='center', va='center', alpha=0.09
)
plt.savefig('./散点图.png')
plt.show()
from matplotlib import pyplot as plt
from matplotlib import font_manager
# 设置字体
my_font = font_manager.FontProperties(fname='./msyh.ttc')
# 设置图片大小
plt.figure(figsize=(20,8),dpi=80)
# 设置xy轴的数值
x_5 = range(1,32)
x_10 = range (41,72)
y_5 = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,24,25,26]
y_10 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,9,10,8,6]
# 使用scatter方法绘制散点图
plt.scatter(x_5,y_5,label = '5月份')
plt.scatter(x_10,y_10,label = '10月份')
# 添加图例
plt.legend(loc= "upper left", prop = my_font)
# 设置xy轴以及标题的描述信息
plt.xlabel('时间',fontproperties = my_font)
plt.ylabel('温度',fontproperties = my_font)
plt.title('5月和10月气温变化散点图',fontproperties = my_font)
# 设置xy的刻度
x_totle =list(x_5) + list(x_10)
x_ticks_label = ['5月{}日'.format(i) for i in x_5]
x_ticks_label += ['10月{}日'.format(i-40) for i in x_10]
# rotation设置描述信息的倾斜角度
plt.xticks(x_totle[::1],x_ticks_label[::1],fontproperties = my_font,rotation = 45)
# 添加水印
plt.text(
x = 25.5,y= 15,
s = '苏凉.py' ,fontproperties = my_font,
color = 'b' ,fontsize = 40,
ha='center', va='center', alpha=0.09
)
# 保存图片
plt.savefig('./散点图.png')
#展示图片
plt.show()
绘制条形图需要用到bar方法我们以上一个温度散点图为例修改一下scatter方法即可
plt.bar(x_5,y_5,label = '5月份')
plt.bar(x_10,y_10,label = '10月份')
若我们需要将图形横过来则需要用到barh方法
plt.barh(x_5,y_5,label = '5月份')
plt.barh(x_10,y_10,label = '10月份')
设置y轴描述信息
plt.yticks(x_totle[::1],x_ticks_label[::1],fontproperties = my_font)
下面以求一个列表中的数字的出现次数为例:该列表为 [10,15,9,20,15,45,65,25,15,78,65,32,32,45,65,10,9,45,85,74,62,54,62,74,65,45,10,102,105,102,105,107,45,65,95]
my_font = font_manager.FontProperties(fname= './msyh.ttc')
d = 7
num = max(x) - min(x)
numbins = num//7
绘制直方图的方法为plt.hist(x, bins=None)
bins:直方图的长条形数目,可选项,默认为10
plt.hist(x,numbins)
plt.xticks(range(min(x),max(x)+d,d))
plt.xlabel('范围',fontproperties = my_font)
plt.ylabel('个数' ,fontproperties = my_font)
plt.title('直方图',fontproperties = my_font)
plt.grid(color ='r' ,alpha = 0.2)
plt.savefig('./直方图.png')
plt.show()
from matplotlib import pyplot as plt
from matplotlib import font_manager
# 设置字体
my_font = font_manager.FontProperties(fname= './msyh.ttc')
x = [10,15,9,20,15,45,65,25,15,78,65,32,32,45,65,10,9,45,85,74,62,54,62,74,65,45,10,102,105,102,105,107,45,65,95]
# 设置组距
d = 7
num = max(x) - min(x)
numbins = num//7
# 绘制直方图
plt.hist(x,numbins)
plt.xticks(range(min(x),max(x)+d,d))
plt.xlabel('范围',fontproperties = my_font)
plt.ylabel('个数' ,fontproperties = my_font)
plt.title('直方图',fontproperties = my_font)
# 添加表格
plt.grid(color ='r' ,alpha = 0.2)
plt.savefig('./直方图.png')
plt.show()
好啦,今天的内容就是绘制这三个图啦,matplotlib可以有效的让数据可视化,在数据分析领域有着极大的作用。希望看到这篇文章的小伙伴们能有所收获。最后,如果你觉得这篇文章可以的话,三连支持一下吧,我是苏凉,咱们下期再见!!