重生归来,我要成功 Python 高手--day26 Matplotlib画图
·
导包:
import matplotlib.pyplot as plt
中文包
plt.rcParams['font.sans-serif'] = ['SimHei'] # 如果是Mac本, 不支持SimHei的时候, 可以修改为 'Microsoft YaHei' 或者 'Arial Unicode MS' plt.rcParams['axes.unicode_minus'] = False
折线图
创建画布
plt.figure(figsize=(), dpi=)
figsize:指定图的长宽
dpi:图像的清晰度
返回fig对象
折线图:plt.plot(x, y)
显示:plt.show()
plt.figure(figsize=(5,5),dpi=100) plt.plot([1, 2, 3, 4, 5, 6 ,7], [17,17,18,15,11,11,13]) plt.show()
辅助功能
刻度:
plt.xtick(刻度位置,刻度线的样式)
plt.ytick(刻度位置,刻度线的样式)
网格显示:
linestyle:网格的样式
appha:透明度
plt.grid(linestyle='--',appha=0.5)
添加标题:
plt.title(fontsize为大小)
添加x,y轴的标题
plt.xlabel
plt.ylabel
保存:
plt.savefig(路径)
例如:
# 生成画布
plt.figure(figsize=(20,5),dpi=80)
#生成值
x=range(60)
y_beijing=[random.uniform(15,18) for i in x]
#画图
plt.plot(x,y_beijing,color='red')
#刻度的样式
x_label=[f'11点{i}分' for i in x]
y_label=range(40)
#加入刻度样式
plt.xticks(x[::5],x_label[::5])
plt.yticks(y_label[::5])
#网格显示
plt.grid(linestyle='--',alpha=0.5)
#添加标题
plt.title('北京11点的温度变化',fontsize=15)
#x,y轴
plt.xlabel('时间')
plt.ylabel('温度')
plt.show()
plt.savefig('1.png')
一个坐标系绘制多条线
图例:
plt.legend(loc=0) 0 为最合适的位置
共用一个x轴需要生成两个y轴的数据
需要加入两条折线
# 多图绘制
plt.figure(figsize=(18,5),dpi=100)
#数据生成
x=range(60)
y_beijing=[random.uniform(2,5) for i in x]
y_shanghai=[random.uniform(15,18) for i in x]
#加入数据和图例
plt.plot(x,y_beijing,color='red',label='北京',linestyle='--')
plt.plot(x,y_shanghai,color='blue',label='上海')
#刻度和标签
x_label=[f'11点{i}分' for i in x]
y_label=range(40)
#加入刻度和标签
plt.xticks(x[::5],x_label[::5])
plt.yticks(y_label[::5])
#显示网格
plt.grid(linestyle='--',alpha=0.5)
#添加标题
plt.title('北京和上海一小时的温度变化',fontsize=20)
#添加x和y轴的内容
plt.xlabel('时间',fontsize=15)
plt.ylabel('温度',fontsize=15)
#添加图例
plt.legend(loc=0)
plt.show()
显示多张图
plt.subplots这个函数会返回两个值第一个是整个图形对象第二个是子图对象(这个子图是一个数组所有可以通过索引回去相应的子图)nrows=1,ncols=2这个创建的是一行两列两个子图
分别实现子图一和子图二的的内容,刻度,图例和标题包括网格都需要进行创建
axes[0].plot(x,y_beijing,color='red',linestyle='--',label='北京') axes[1].plot(x,y_shanghai,color='blue',label='上海')
例如:
fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(25,8),dpi=100)
#创建数据
x=range(60)
y_beijing=[random.uniform(2,5) for i in x]
y_shanghai=[random.uniform(15,18) for i in x]
#插入数据
axes[0].plot(x,y_beijing,color='red',linestyle='--',label='北京')
axes[1].plot(x,y_shanghai,color='blue',label='上海')
#创建刻度值
x_label=[f'11点{i}分' for i in x]
y_label=range(40)
# 插入刻度值
axes[0].set_xticks(x[::5],x_label[::5])
axes[0].set_yticks(y_label[::5])
axes[1].set_xticks(x[::5],x_label[::5])
axes[1].set_yticks(y_label[::5])
#插入图例和标题
axes[0].set_title('北京温度',fontsize=20)
axes[0].set_xlabel('时间',fontsize=15)
axes[0].set_ylabel('温度',fontsize=15)
axes[1].set_title('上海温度',fontsize=20)
axes[1].set_xlabel('时间',fontsize=15)
axes[1].set_ylabel('温度',fontsize=15)
#显示网格
axes[0].grid(linestyle='--',alpha=0.5)
axes[1].grid(linestyle=':',alpha=0.5)
#显示图例
axes[0].legend(loc=0)
axes[1].legend(loc=0)
#显示图像
plt.show()
柱状图
使用 plt.bar(x,y)
# 绘制柱状图
plt.figure(figsize=(10,4), dpi=100)
#准备数据
x=['A','B','C','D']
y=[10,4,2,20]
#绘制柱状图
plt.bar(x,y)
#显示网格
plt.grid(linestyle='--',alpha=0.5)
#绘制标签和x,y轴
plt.title('柱状图',fontsize=20)
plt.xlabel('分类名',fontsize=12)
plt.ylabel('数量',fontsize=12)
plt.show()
直方图
plt.hist(数据,bins=显示多少个)
#绘制直方图
plt.figure(figsize=(10,4), dpi=100)
data=np.random.randn(500)
plt.hist(data,bins=50)
#显示网格
plt.grid(linestyle=':',alpha=0.5)
#绘制标签和x,y轴
plt.title('直方图',fontsize=20)
plt.show()
散点图
plt.scatter(x,y)
#绘制散点图
plt.figure(figsize=(10,4), dpi=100)
x=[1,2,3,4,5,6,7,8,9]
y=[12,13,14,15,16,17,18,19,20]
plt.scatter(x,y)
plt.grid(linestyle='--',alpha=0.5)
plt.title('散点图',fontsize=20)
plt.xlabel('x',fontsize=12)
plt.ylabel('y',fontsize=12)
plt.show()
饼图
plt.pie(数据,对应的图例,autopct=‘%1.1f%%’为百分号保留一位小数)
#饼图
plt.figure(figsize=(10,4), dpi=100)
x=[15,35,25,25]
y=['classA','classB','classC','classD']
plt.pie(x,labels=y,autopct='%1.1f%%')
plt.title('饼图')
plt.show()更多推荐
所有评论(0)