机器学习03——matplotlib
·
1、实现基础绘图
#导入包
import matplotlib.pyplot as plt
import random
#准备数据
x=range(60)
y=[random.uniform(15,18) for i in x]
#创建画布
plt.figure(figsize=(20,8),dpi=100)
#绘图
plt.plot(x,y)
#展示
plt.show()

2、添加x、y刻度、网格显示、描述信息,图像保存
import matplotlib.pyplot as plt
import random
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] #1、 Mac 通用中文
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
#准备数据
x=range(60)
y=[random.uniform(15,18) for i in x]
#创建画布
plt.figure(figsize=(20,8),dpi=100)
#x和y的刻度
x_ticks_label=["11点{}分".format(i) for i in x]
y_ticks=range(40)
#修改x和y的坐标刻度显示
plt.xticks(x[::5],x_ticks_label[::5])
plt.yticks(y_ticks[::5])
# 2. 【关键一步】强制设置 Y 轴显示的最小值和最大值,因为 Matplotlib 的“自动缩放”功能和你的刻度设置打架了
plt.ylim(0, 40)
#添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午温度变化",fontsize=20)
#绘图
plt.grid(True,linestyle='--',alpha=0.5) #设置网格
plt.plot(x,y)
#保存图像,在plt.show()之前
plt.savefig("./Desktop/1.pdf")
#展示
plt.show()

3、重置绘图环境
import importlib
importlib.reload(plt) # 重新加载模块,有时语法出错了会无法继续运行代码,需要重置,找回那个被你弄丢的“工人”
4、在一个坐标系中绘制多个图像
多个plot即可,注意区分线条
import matplotlib.pyplot as plt
import random
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
x=range(60)
y=[random.uniform(15,18) for i in x]
y_1=[random.uniform(0,5) for i in x]
plt.figure(figsize=(20,8),dpi=100)
x_ticks_label=["11点{}分".format(i) for i in x]
y_ticks=range(40)
plt.xticks(x[::5],x_ticks_label[::5])
plt.yticks(y_ticks[::5])
plt.ylim(0, 40)
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午温度变化",fontsize=20)
plt.grid(True,linestyle='--',alpha=0.5)
#绘图
plt.plot(x,y,label="北京")
plt.plot(x,y_1,color='r',linestyle='--',label="上海")
#添加图例
plt.legend(loc="best",fontsize=20)
plt.savefig("./Desktop/1.pdf")
plt.show()

5、在多个坐标系显示图像
用到了plt.subplots()
import matplotlib.pyplot as plt
import random
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
x=range(60)
y=[random.uniform(15,18) for i in x]
y_1=[random.uniform(0,5) for i in x]
#创建画布,把这张纸切成1行2列,“面向对象”的写法
fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)
#绘制画布
axes[0].plot(x,y,label="北京")
axes[1].plot(x,y_1,color='r',linestyle='--',label="上海")
x_ticks_label=["11点{}分".format(i) for i in x]
y_ticks=range(40)
axes[0].set_xticks(x[::5]) #子图设置要加 .set_
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])
axes[0].grid(True,linestyle='--',alpha=0.5)
axes[1].grid(True,linestyle='--',alpha=0.5)
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)
axes[0].legend(loc=0)
axes[1].legend(loc=0)
#plt.savefig("./Desktop/1.pdf")
fig.savefig("./Desktop/1.pdf") #两种方法都可以
plt.show()

6、绘制其他函数图像
import matplotlib.pyplot as plt
import numpy as np #plot也可以画各种数学函数的图
x=np.linspace(-10,10,1000)
y=np.sin(x)
plt.figure(figsize=(20,8),dpi=100)
plt.plot(x,y)
plt.show()

其他图形:
折线图:显示数据变化趋势
散点图:判断变量之间是否有数量关联趋势 plt.scatter(x,y)
柱状图:一眼看出各个数据的大小
直方图:展示一组或多组的数据分布状况
饼图:分类数据的占比情况
更多推荐

所有评论(0)