科学库——matplotlib"/>
数据科学库——matplotlib
数据科学库——matplotlib
- matplotlib
- 为什么学习matplotlib
- 基础绘图
- 绘制散点图
- 绘制条形图
- 绘制直方图
- matplotlib使用流程
- matplotlib更多图形样式
matplotlib
为什么学习matplotlib
能将数据进行可视化,更直观的呈现
使数据更加客观,具有说服力
基础绘图
axis指的就是x轴或者y轴
from matplotlib import pyplot as plt
##从2开始 到26截止(不包含26),步长为2
## range(start,stop,step)
x=range(2,26,2)
y=[14,21,22,23,24,18,17,19,20,23,24,21]
##通过plot方法画出折线图 如果是俩个折现图 就用俩次plot
# label 设置图例 color设置颜色 linestyle 设置线的风格
#linewidth 设置线条粗细 alpha设置透明度
plt.plot(x,y)
plt.show()
设置图片大小(宽20,高8)
plt.figure(figsizes=(20,8),dpi=80)
存储图片(放在绘制的操作后面)
plt.savefig("./fig_size.png")
设置x轴刻度 设置y轴刻度
plt.xticks(x)
plt.yticks(range(min(y),max(y)+1))
调整x轴刻度为非数字
_x=list(x)
_xtick_labels=["10点{}分".format(i) for i range(60)]
_xtick_labels+=["11点{}分".format(i) for i range(60)]
#步长为3 rotation旋转的度数
plt.xticks(x[::3],_xtick_labels[::3],rotation=90)
matplotlib不支持中文显示,需要设置
#查看系统中所有的字体
fc-list
#查看系统中支持的中文字体
fc-list:lang=zh
windows和linux的设置字体方式
import matplotlibfont = {'family' : 'MicroSoft YaHei','weight' : 'bold','size' : 'larger'}
matplotlib.rc("font",**font)
另外一种方式设置字体
from matplotlib import font_manager
my_font=font_manager.FontProperties(fname="字体路径.ttc")
...
plt.xticks(x[::3],_xtick_labels[::3],rotation=90,fontproperties=my_font)
添加描述信息
plt.xlabel("时间",fontproperties=my_font)
plt.ylabel("温度",fontproperties=my_font)
plt.title("10点到12点每分钟的气温变化情况",fontproperties=my_font)
#设置网格 alpha设置透明度
plt.grid(alpha=0.4)
绘制散点图
绘制3月份每天的气温
y_3=[21,23,24,16,19,18,17,21,22,19,20,24,19,18,20,21,23,24,16,19,18,17,21,22,19,20,24,19,18,20,21]
x=range(1,32)
plt.scatter(x,y_3)
在同一张图中绘制3月份和10月份的气温(数据是自己编的)
y_3=[21,23,24,16,19,18,17,21,22,19,20,24,19,18,20,21,23,24,16,19,18,17,21,22,19,20,24,19,18,20,21]
x_3=range(1,32)y_10=[20,23,21,19,12,17,19,26,26,16,26,27,29,28,20,25,23,14,26,29,28,27,20,23,29,25,20,18,28,24,28]
x_10=range(51,82)
plt.scatter(x_3,y_3)
plt.scatter(x_10,y_10)
# 展示
plt.show()
调整x轴刻度 使用plt.xticks()进行参数的设置
_x=list(x_3)+list(x_10)
_xtick_labels=["3月{}日".format(i) for i in x_3]
_xtick_labels+=["10月{}日".format(i-50) for i in x_10]
plt.xticks(_x,_xtick_labels)
#设置步长,设置旋转角度,设置字体可以显示中文,
plt.xticks(_x[::3],_xtick_labels[::3],rotation=45,fontproperties=my_font)
添加图例,修改scatter
plt.scatter(x_3,y_3,label="3月份")
plt.scatter(x_10,y_10,label="10月份")
plt.legend(loc="upper left",prop=my_font)
再添加相应的x轴,y轴,标题信息
绘制条形图
(一)绘制竖着的条形图 使用bar()
a=[“战狼2”,“速度与激情8”,“电影3”,“电影4”]
b=[12.12,23.23,12,34,23,45]
plt.bar(range(len(a)),b)
plt.xticks(range(len(a)),a)
plt.show()
(二)绘制横着的条形图 使用barh()
plt.barh(range(len(a)),b,height=0.3)
plt.yticks(range(len(a)),a)
plt.show()
通过之前上面提到的方法,进行设置图形大小,显示中文,调整线条,调整颜色,绘制网格等等。
from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname="/System/Library/Fonts/Hiragino Sans GB.ttc")a = ["猩球崛起3:终极之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]
b_16 = [15746,312,4497,319]
b_15 = [12357,156,2045,168]
b_14 = [2358,399,2358,362]bar_width = 0.2x_14 = list(range(len(a)))
x_15 = [i+bar_width for i in x_14]
x_16 = [i+bar_width*2 for i in x_14]#设置图形大小
plt.figure(figsize=(20,8),dpi=80)plt.bar(range(len(a)),b_14,width=bar_width,label="9月14日")
plt.bar(x_15,b_15,width=bar_width,label="9月15日")
plt.bar(x_16,b_16,width=bar_width,label="9月16日")#设置图例
plt.legend(prop=my_font)#设置x轴的刻度
plt.xticks(x_15,a,fontproperties=my_font)
#省略设置title xlabel ylabel等代码
plt.show()
绘制直方图
基本绘图使用hist()方法,代码如下:
from matplotlib import pyplot as plt
a=[131, 98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115, 99, 136, 126, 134, 95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117, 86, 95, 144, 105, 126, 130,126, 130, 126, 116, 123, 106, 112, 138, 123, 86, 101, 99, 136,123, 117, 119, 105, 137, 123, 128, 125, 104, 109, 134, 125, 127,105, 120, 107, 129, 116, 108, 132, 103, 136, 118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125, 138, 109, 132, 134,156, 106, 117, 127, 144, 139, 139, 119, 140, 83, 110, 102,123,107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133,112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103, 144, 83, 123, 111, 110, 111, 100, 154,136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141,120, 117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 125, 126,114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133, 137, 92,121, 112, 146, 97, 137, 105, 98, 117, 112, 81, 97, 139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 110,105, 129, 137, 112, 120, 113, 133, 112, 83, 94, 146, 133, 101,131, 116, 111, 84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]
#将数据分成20组
plt.hist(a,20)
plt.show()
#设置组数
d=3 #组距等于3
num_bins=(max(a)-min(a))//d#整除
plt.hist(a,num_bins)
#设置x轴刻度 max(a)+d显示最后一个刻度
plt.xticks(range(min(a),max(a)+d,d))
plt.grid()
plt.show()
matplotlib使用流程
1.明确问题
2.选择图形的呈现方式
3.准备数据
4.绘图和图形的完善
matplotlib更多图形样式
参考官网文档,网址如下:
.html.
更多推荐
数据科学库——matplotlib
发布评论