Matplotlib画图(折线图、散点图、柱状图、直方图、饼状图)
Matplotlib可分容器层、辅助显示层、图像层去理解,不同的层专门做不同的操作与图像控制,成体系理解有助于找到图像问题,更加灵活绘制、修改图片。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d8a6591a9016a0366400be2a0695bcdf.jpeg)
常用命令
命令 | 解释 |
---|
plt.figure(figsize=(20,5),dpi=100) | 创建画布,figsize指定长宽,dpi指定清晰度 |
plt.plot([x1,x2],[y1,y2],color=“g”,linestyle=‘–’,label=“GZ”) | 将数据画入,label表示图例 |
plt.show() | 展示当前图片 |
plt.yticks()、plt.xticks() | 设置横纵坐标 |
plt.xlabel(‘’)、plt.ylabel(‘’)、plt.title(‘’) | 设置横纵坐标名称、图片标题 |
plt.grid(True,linestyle=‘-’,alpha=0.5) | 网格线,alpha指定透明度 |
subplots | 分区域,返回两个参数(对象) |
图片类别
命令 | 类型-用途 |
---|
plot | 折线图:趋势/变化 |
scatter | 散点图:关系/规律 |
bar | 柱状图:统计/对比(比较数据大小) |
histogram(hist) | 直方图:分布状况(展示数据分布) |
pie | 饼状图:占比分析 |
折线图
import matplotlib.pyplot as plt
import random
y_guangzhou = [random.uniform(20,25) for i in range(60)]
y_beijing = [random.uniform(1,3) for i in range(60)]
x_label = ["11点{}分".format(i) for i in range(60)]
plt.figure(figsize=(20,10),dpi=100)
plt.plot(x_label,y_guangzhou,color='g',linestyle='--',label='广州')
plt.plot(x_label,y_beijing,color='b',linestyle='-.',label='北京')
plt.legend()
plt.yticks(range(0,41)[::5])
plt.xticks(x_label[::5])
plt.grid(True,linestyle='-.',alpha=0.5)
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("广州 - 北京某时刻温度变化")
plt.show()
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1f415c476b6cf46943ab4d17fd8ba137.png)
双图示例(对象操作)
figer,axes = plt.subplots(nrows=1,ncols=2,figsize=(30,8),dpi=180)
axes[0].plot(x_label,y_guangzhou,color='g',linestyle='--',label='广州')
axes[1].plot(x_label,y_beijing,color='b',linestyle='-.',label='北京')
axes[0].legend()
axes[1].legend()
axes[0].set_yticks(range(0,41)[::5])
axes[0].set_xticks(x_label[::5])
axes[1].set_yticks(range(0,41)[::5])
axes[1].set_xticks(x_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("广州某时刻温度变化")
axes[1].set_xlabel("时间")
axes[1].set_ylabel("温度")
axes[1].set_title("北京某时刻温度变化")
plt.show()
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/880f410590cf5b48e5a04923b77b8403.png)
散点图
import numpy as np
x = np.linspace(-10,10,100)
y = x*2*x
plt.figure(figsize=(20,10),dpi=80)
plt.scatter(x,y)
plt.grid(True,linestyle="--",alpha=0.5)
plt.yticks(range(300)[::50])
plt.xticks(range(-10,11)[::2])
plt.show()
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/398c9fb272e6246921688b5bcce9b144.png)
柱状图
move_name = ["肖申克的救赎","长津湖","复仇者联盟","喜羊羊","熊出没"]
day01 = [1000,800,500,200,1000]
tickes = [9000,10000,8000,5000,11000]
plt.figure(figsize=(20,10),dpi=80)
plt.bar(move_name,tickes,color=['b','r','g','y','c'],width=0.5)
plt.grid(True,linestyle="--",alpha=0.5)
plt.title("电影票房统计")
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e27ef9d9668939663083ff2dbd273886.png)
plt.figure(figsize=(20,8),dpi=80)
plt.bar(range(5),day01,width=0.2,label="首日票房")
plt.bar([0.2,1.2,2.2,3.2,4.2],tickes,width=0.2,label="一周票房")
plt.grid(True,linestyle="--",alpha=0.5)
plt.legend()
plt.xticks([0.1,1.1,2.1,3.1,4.1],move_name)
plt.show()
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e3f2c8fcfc3d814b2c764ebd37d37d8e.png)
直方图
time = [int(random.uniform(100,181)) for i in range(200)]
plt.figure(figsize=(20,8),dpi=80)
group=40
plt.hist(time,bins=group,density=True)
plt.xticks(range(100,181,2))
plt.grid(linestyle="--",alpha=0.5)
plt.xlabel("时长分布")
plt.ylabel("频数统计")
plt.title("电影时长分布直方图")
plt.show()
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/376b3b95c8fcf55fa72d3d9c1b9cc842.png)
直方图与柱状图的区别
- 直方图展示数据的分布,柱状图比较数据的大小
- 直方图X轴为定量数据,柱状图X轴为分类数据
- 直方图柱子无间隔,柱状图柱子有间隔
- 直方图柱子宽度可不一,柱状图柱子宽度须一致
饼状图
move_name = ["肖申克的救赎","长津湖","复仇者联盟","喜羊羊","熊出没"]
tickes = [9000,10000,8000,5000,11000]
plt.figure(figsize=(20,8),dpi=80)
plt.pie(tickes,labels=move_name,colors=['b','r','g','y','c'],autopct="占%1.2f%%")
plt.axis('equal')
plt.legend()
plt.show()
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5e2f8dfef8fd61cc6e4987f64538d7fe.png)