Matplotlib
一.概述
pycharm安装 包:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple API名
主要用于开发2D图表(3D也可一做)
数据分析,基于分析,进行展示
2.绘图流程
1>创建画布
2>绘制图像
3>显示图像
#1.创建画布
plt.figure(fisize=(20,8),dpi=100);
// fisize 控制画布大小 dpi:像素清晰度
#2.绘制图像
x=[1,2,3]
y=[4,5,6]
plt.plot(x,y)
#3.显示图像
plt.show()
二.折线图(plot)与基础绘图功能
1.图像保存
plt.savefig(path) //需要图像展
注意:图像保存一定要放到show(图像展示)前面,因为plt.show()会释放figure资源,如果在显示图像之后保存图片只能保存空图片
2.添加x轴,y轴刻度
plt.xticks
plt.yticks
注意:第一个参数必须是数字,如果不是数字,需要进行值替换
3.添加网格
plt.grid()
参数:
True :表示显示网格
linestyle -- 绘制网格的方式 一般0.5 0.7
alpha -- 透明度
4.添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("一小时温度变化图", fontsize=20)
5.多次plot
直接进行绘制
里面的color可以指定颜色
6.显示图例
plt.legend()
注意:多次绘图需要在显示之前,声明plot里面lable的具体值
如果指在plt.plot()中设置label还不能最终显示出图例,还需要用plt.legend()将图例显示出来
里面的loc 参数可以用来控制多个图例的位置 一般loc都设置为"best" 或0,用来显示 Label标记名字的
图例分别代表哪个图
7.多个坐标系图像显示
fig, axes = plt.subplots()
nrows -- 几行
ncols -- 几列
注意:有些方法需要添加set_*
8.折线图应用场景
1.表示数据变化
2.绘制一些数学图像
9.案例:
1>天气变化图显示在两张图上
def weatherShow_Two():
# //生成数据
x = range(60)
y_beijing = [random.uniform(10, 15) for i in x]
y_shanghai = [random.uniform(15, 25) for i in x]
# random.uniform用法
# x:随机数的最小值,包含该值
# y:随机数的最大值,不包含该值
# 返回值:浮点数N,x<=N<=y
# 1.生成画布
# plt.figure(figsize=(20, 8), dpi=100)
fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)
# 2.图形绘制
axes[0].plot(x, y_beijing, color="g", linestyle="-.", label="北京")
axes[1].plot(x, y_shanghai, label="上海")
# 2.1添加x,y轴刻度
y_ticks = range(60)
# format用于字符拼接,format里的东西显示到前面的大括号里 也可以 {}11点{}分".format("dsad",i)
x_ticks_label = ["11点{}分".format(i) for i in x]
# y轴从头到尾每隔5个且一个
# plt.yticks(y_ticks[::5])
# plt.xticks(x[::5], x_ticks_label[::5])
# # plt.xticks(x_ticks_label[::5])// 必须最开始传进去的为数字 这种方式是错的,如果不是数字需要进行值替换
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::5])
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5])
# 2.2添加网格
axes[0].grid(True, linestyle='--', alpha=1.0)
axes[1].grid(True, linestyle='--', alpha=1.0)
# 2.3添加描述
axes[0].set_xlabel("时间")
axes[0].set_ylabel("温度")
axes[0].set_title("一小时温度变化图", fontsize=20)
axes[1].set_xlabel("时间")
axes[1].set_ylabel("温度")
axes[1].set_title("一小时温度变化图", fontsize=20)
# 2.4显示图例
axes[0].legend(loc=0);
axes[1].legend(loc=0);
plt.show()
2> 天气变化图显示在一张图上
def weatherShow_One():
# //生成数据
x=range(60)
y_beijing=[random.uniform(10,15) for i in x]
y_shanghai = [random.uniform(15, 25) for i in x]
#random.uniform用法
# x:随机数的最小值,包含该值
# y:随机数的最大值,不包含该值
# 返回值:浮点数N,x<=N<=y
#1.生成画布
plt.figure(figsize=(20,8),dpi=100)
#2.图形绘制
plt.plot(x,y_beijing,color="g",linestyle="-.",label="北京")
plt.plot(x, y_shanghai,label="上海")
#2.1添加x,y轴刻度
y_ticks=range(60)
# format用于字符拼接,format里的东西显示到前面的大括号里 也可以 {}11点{}分".format("dsad",i)
x_ticks_label=["11点{}分".format(i) for i in x]
# y轴从头到尾每隔5个且一个
plt.yticks(y_ticks[::5])
plt.xticks(x[::5],x_ticks_label[::5])
# plt.xticks(x_ticks_label[::5])// 必须最开始传进去的为数字 这种方式是错的,如果不是数字需要进行值替换
#2.2添加网格
plt.grid(True,linestyle='--',alpha=1.0)
#2.3添加描述
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("一小时温度变化图",fontsize=20)
#2.4显示图例
plt.legend("best");
plt.show()
三.常见图形绘制
1.折线图 -- plt.plot
变化
2.散点图 -- plt.scatter()
分布规律
3.柱状图 -- plt.bar
统计、对比
4.直方图 -- plt.hist()
统计,分布
5.饼图 -- plt.pie()
占比
其余步骤都跟折线图的方式一样 只是绘图这一步骤变了,等用到时在查具体的参数即可
# plt.xticks(x[::5], x_ticks_label[::5])
# # plt.xticks(x_ticks_label[::5])// 必须最开始传进去的为数字 这种方式是错的,如果不是数字需要进行值替换
x[::5] 和x_ticks_label[::5]的数据需一样才能替换 绘制每种图形,想要用汉字显示,都需要先声明与汉字对应大小的数组以便能够替换