下面是关于 matplotlib.pyplot 画图并导出保存的完整攻略:
1. 安装 matplotlib
首先,需要安装 matplotlib 才能使用其中的 pyplot 模块进行绘图。可以使用 pip 命令进行安装:
pip install matplotlib
2. 导入和使用 pyplot 模块
在开始之前,需要导入 matplotlib.pyplot 模块:
import matplotlib.pyplot as plt
接下来,可以使用 plt.subplots() 函数创建一个画布和坐标系。例如,下面的代码创建一个包含一个子图(subplot)的画布:
fig, ax = plt.subplots()
这里,fig 是整个画布的对象,ax 是子图对象,是用于绘制图形的坐标系。可以在 ax 上使用 plt.plot() 函数绘制数据,如下所示:
x = [1, 2, 3, 4, 5]
y = [1, 4, 2, 3, 7]
ax.plot(x, y)
3. 添加图形元素
可以在图形中添加各种元素,如表格、标签、标题、坐标轴等。例如,下面的代码向图形添加了一个标题和坐标轴标签:
ax.set_title('My plot')
ax.set_xlabel('X axis label')
ax.set_ylabel('Y axis label')
4. 导出图形
完成绘图后,需要将其保存为文件。可以使用 plt.savefig() 函数保存图像。例如,下面的代码将图形保存为名为 "output.png" 的 PNG 文件:
plt.savefig('output.png')
这里,savefig() 函数需要指定文件名和图像格式,也可以选择保存图像的 DPI(点每英寸)和图像的边框裁剪(bbox_inches)。
示例1:绘制多个子图
下面是一个示例,展示如何绘制包含多个子图的画布,并将其保存到文件:
import numpy as np
import matplotlib.pyplot as plt
# 创建一个 2 x 2 的子图数组
fig, axs = plt.subplots(2, 2)
# 绘制第一个子图
x = np.arange(0, 10, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
axs[0, 0].plot(x, y1)
axs[0, 0].set_title('Sin(x)')
axs[0, 0].set_xlabel('x')
axs[0, 0].set_ylabel('y')
# 绘制第二个子图
axs[0, 1].plot(x, y2)
axs[0, 1].set_title('Cos(x)')
axs[0, 1].set_xlabel('x')
axs[0, 1].set_ylabel('y')
# 绘制第三个子图
axs[1, 0].hist(y1, bins=20)
axs[1, 0].set_title('Histogram')
axs[1, 0].set_xlabel('Value')
axs[1, 0].set_ylabel('Frequency')
# 绘制第四个子图
axs[1, 1].scatter(x, y1, c=y2)
axs[1, 1].set_title('Scatter')
axs[1, 1].set_xlabel('x')
axs[1, 1].set_ylabel('y')
# 调整子图之间的间距
plt.subplots_adjust(wspace=0.3, hspace=0.3)
# 保存图形
plt.savefig('output.png')
示例2:使用 Seaborn 显示数据分布
下面是一个示例,展示如何使用 Seaborn 库快速绘制数据分布图,并将其保存到文件:
import seaborn as sns
# 加载数据集
tips = sns.load_dataset('tips')
# 使用 Seaborn 绘制数据分布
sns.displot(data=tips, x='total_bill', hue='time', kind='kde')
# 添加标题和标签
plt.title('Total Bill Distribution')
plt.xlabel('Total Bill ($)')
plt.ylabel('Density')
# 保存图形
plt.savefig('output.png')
这里,数据集包含关于餐厅小费的信息,绘制的图形展示了不同时间的消费总额分布。可以使用 kind 参数指定要绘制的图形类型,这里使用的是核密度估计(kde)。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:matplotlib.pyplot画图并导出保存的实例 - Python技术站