Matplotlib是一个用于在Python中创建静态、交互式和动画可视化的Python库。
import matplotlib.pyplot as plt# 设置Matplotlib支持中文plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体为黑体plt.rcParams['axes.unicode_minus'] = False# 解决保存图像时负号'-'显示为方块的问题plt.figure(figsize=(10, 5))plt.title('标题')plt.xlabel('横轴')plt.ylabel('纵轴')plt.plot([1, 2, 3], [1, 2, 3])plt.show()
基础绘图入门
画布(Figure):plt.figure()绘图、坐标系axes:plt.subplots()
import matplotlib.pyplot as plt# 创建画布## 大小,清晰度plt.figure(figsize(8,6),dpi=100)# 折线图plt.plot([1, 2, 3, 4], [1, 4, 9, 16])# 保存图片plt.savefig('img/line_chart.png')# 显示图形plt.show()
plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。
matplotlib.pyplot 模块详解
自定义刻度
# x:要显示的刻度值plt.xticks(x, **kwargs)# y:要显示的刻度值plt.yticks(y, **kwargs)
import randomimport matplotlib.pyplot as pltx=range(100)y =[random.uniform(1,30) for i in x]# 修改xy刻度plt.xticks(range(0,100,10))plt.yticks(range(0,20,2))plt.plot(x,y)plt.show()

网格效果
plt.grid(True,linestyle='--',alpha=0.5)

plt.grid(True,linestyle='--',axis='y')

区别对比:
plt.grid(True, linestyle='--', alpha=0.5) 和 plt.grid(True, linestyle='--', axis='y') 这两行代码都是用来在Matplotlib的图表中添加网格线的,但它们各自的参数控制了网格线的不同方面:
- 1.
plt.grid(True, linestyle='--', alpha=0.5):
- • linestyle='--' 指定网格线的样式为虚线。
- • alpha=0.5 设置网格线的透明度为半透明,alpha 的值范围是0到1,其中0是完全透明,1是完全不透明。
- 2.
plt.grid(True, linestyle='--', axis='y'):
- • linestyle='--' 同样指定网格线的样式为虚线。
- • axis='y' 表示仅在y轴方向添加网格线,不在x轴方向添加。
简而言之,第一行代码在图表中添加了透明度为0.5的虚线网格线,覆盖了x轴和y轴方向。而第二行代码只在y轴方向添加了虚线网格线,没有设置透明度,所以网格线将是默认的不透明度。
多折线样式
color参数可以改变颜色linestyle可以改变线条风格labe参数配合plt.legend()l用于显示图例
x=range(100)y =[random.uniform(1,30) for i in x]y2=[random.uniform(20,30) for i in x]# 修改xy刻度#plt.xticks(range(0,100,10))plt.yticks(range(0,20,2))#plt.plot(x,y,color='r')plt.plot(x,y2,color='g')

图例位置控制
plt.legend(loc=1)中的loc参数控制显示图例位置
# plt.legend(loc=1)- 'best': 0 - 自动选择最佳位置- 'upper right': 1 - 图的右上角- 'upper left': 2 - 图的左上角- 'lower left': 3 - 图的左下角- 'lower right': 4 - 图的右下角- 'right': 5 - 图的右侧- 'center left': 6 - 图的左侧中间位置- 'center right': 7 - 图的右侧中间位置- 'lower center': 8 - 图的底部中间位置- 'upper center': 9 - 图的顶部中间位置- 'center': 10 - 图的中心

子图绘制
plt.subplots() 函数用于创建一个图形和一组子图。plt.函数名()相当于面向过程的画图方法,axes.set_方法名()相当于面向对象的画图方法。
fig, axs = plt.subplots(nrows=1, ncols=2, figsize=(10, 5),dpi=100)# Configure the first subplotaxes[0].set(title='First Plot', xlabel='X-axis Label', ylabel='Y-axis Label')axes[0].plot([1, 2, 3], [1, 4, 9]) axes[0].set_yticks(range(0,40,3)axes[0].set_xlabel("x")axes[0].set_ylabel("y")axes[0].set_title("xxxx")axes[1].plot(x)# Show the plotplt.show()
plt.函数名()和axes.set_方法名()都是用于绘制图形的方法,但是它们有一些不同之处。
plt.函数名()是面向过程的画图方法,它直接在当前图形对象上进行绘制操作。例如,plt.plot()会直接在当前图形对象上创建一个折线图。
而axes.set_方法名()是面向对象的画图方法,它需要先创建一个图形对象(通常是Axes对象),然后在该对象上进行绘制操作。例如,axes.set_xlabel()会在特定的Axes对象上设置x轴标签。
使用面向过程的方法,你不需要创建图形对象,可以直接在当前图形上进行绘制操作。这种方法适用于简单的绘图任务。使用面向对象的方法,你可以更灵活地控制图形的各个组成部分,并进行更复杂的绘图操作。
总的来说,plt.函数名()是一种便捷的绘图方式,适用于简单的绘图需求,而axes.set_方法名()则更适用于更灵活、更复杂的绘图需求。
图形种类大全
Matplotlib中常见的图形种类包括折线图、散点图、条形图、直方图、饼图等。
折线图
通过调用plt.show()可以显示绘制的折线图。
import matplotlib.pyplot as pltx = [1, 2, 3, 4, 5]y = [2, 3, 5, 7, 11]plt.plot(x, y)plt.show()
plt.plot 是Matplotlib库中用于绘制折线图的函数。折线图用来显示变量随着另一个变量的变化而变化的趋势。
plt.plot(x, y, linestyle, marker, color)
其中,x和y分别是折线的x坐标和y坐标的数组,linestyle表示折线的样式,marker表示数据点的标记样式,color表示折线的颜色。

散点图
通过调用plt.show()可以显示绘制的散点图。
import matplotlib.pyplot as pltx = [1, 2, 3, 4, 5]y = [2, 3, 5, 7, 11]plt.scatter(x, y)plt.show()
plt.scatter 是Matplotlib库中用于绘制散点图的函数。散点图用来显示两个变量之间的关系,其中每个点的位置表示两个变量的值。
plt.scatter(x, y, s=size, c=color, marker=marker)
其中,x和y分别是包含散点的x坐标和y坐标的数组,size表示散点的大小,color表示散点的颜色,marker表示散点的形状。

条形图
通过调用plt.show()可以显示绘制的柱状图。
import matplotlib.pyplot as pltx = ['A', 'B', 'C', 'D', 'E']y = [10, 20, 15, 25, 30]plt.bar(x, y)plt.show()
plt.bar 是Matplotlib库中用于绘制柱状图的函数。柱状图用于比较不同类别或组的数据,通过柱子的高度来表示数据的大小。
plt.bar(x, height, width=width, color=color)
其中,x是一个数组,包含每根柱子的位置信息,height是一个数组,包含每根柱子的高度,width是柱子的宽度,color是柱状图的颜色。
直方图
通过调用plt.show()可以显示绘制的直方图。
import matplotlib.pyplot as pltimport numpy as npdata = np.random.randn(1000)plt.hist(data, bins=30)plt.show()
plt.hist 是Matplotlib库中用于绘制直方图的函数。直方图用于显示数据的分布情况,将数据划分成多个区间(称为"箱子"),然后统计每个区间内数据的数量,最终以柱状图的形式展示。
plt.hist(x, bins=bins, color=color, alpha=alpha)
其中,x是输入的数据,bins用于指定箱子的数量或分布,color指定柱状图的颜色,alpha是指定柱状图的透明度。
饼图
通过调用plt.show()可以显示绘制的饼图。
import matplotlib.pyplot as pltsizes = [15, 30, 45, 10]labels = ['A', 'B', 'C', 'D']plt.pie(sizes, labels=labels, autopct='%1.1f%%')plt.show()
plt.pie 是Matplotlib库中用于绘制饼图的函数。它接受一组数值作为输入,然后根据这些数值的大小在饼图上绘制相应比例的扇形。
plt.pie(x, labels=labels, colors=colors, explode=explode, autopct='%1.1f%%', startangle=140)
其中,x是输入的数值,labels是扇形的标签,colors是扇形的颜色,explode是指定扇形的偏移量,autopct用于指定饼图上的数据标签格式,startangle是起始角度。
