数据可视化工具Matplotlib入门教程
环境配置与基础操作
数据可视化是数据分析的重要手段,它不仅是一种结果的表现形式,还能帮助我们更好地理解数据。今天我们来学习一个常用的数据可视化工具——Matplotlib。
1. 环境配置
在使用Matplotlib之前,我们需要进行一些环境配置。首先,导入Matplotlib的绘图模块:
import matplotlib.pyplot as plt
然后,我们可以通过设置魔术方法(如在IPython中),使得图像绘制完成后自动显示。例如:
plt.plot(x, y)
plt.show()
在某些环境中,如PyCharm,需要显式地调用plt.show()
来显示图像。此外,我们还可以设置绘图风格:
- 临时设置风格:
with plt.style.context('ggplot'):
plt.plot(x, y)
永久设置风格:
plt.style.use('seaborn-whitegrid')
- 图像保存
绘制完图像后,可以通过以下方式保存:
plt.savefig(‘filename.png’)
基础图表绘制
折线图
折线图是最基本的图表之一,适用于展示数据的趋势。以下是绘制折线图的基本语法:
plt.plot(x, y, color='blue', linestyle='-', linewidth=2, marker='o', markersize=5)
plt.xlabel('X Label')
plt.ylabel('Y Label')
plt.title('Title')
plt.legend(['Label'])
plt.show()
散点图
散点图用于显示数据点之间的关系。可以通过颜色和大小来增强视觉效果:
plt.scatter(x, y, c=z, s=50, alpha=0.5)
plt.colorbar()
plt.show()
柱形图
柱形图用于比较不同类别的数值。可以创建简单的柱形图或堆叠柱形图:
plt.bar(x, height, width=0.8, bottom=None, align='center', color='blue', edgecolor='black')
plt.show()
直方图
直方图用于展示数据的分布情况。可以将其转换为概率密度图:
plt.hist(data, bins=50, density=True)
plt.show()
误差图
误差图用于表示数据的不确定性。可以在折线图或柱形图中添加误差线:
plt.errorbar(x, y, yerr=dy, fmt='o', ecolor='red', capsize=5)
plt.show()
高级功能
多子图
多子图可以将多个图表组合在一个窗口中。可以创建规则或多行多列的子图:
fig, axs = plt.subplots(2, 2)
axs[0, 0].plot(x, y)
axs[0, 1].scatter(x, y)
axs[1, 0].bar(x, y)
axs[1, 1].hist(y, bins=50)
plt.tight_layout()
plt.show()
三维图表
Matplotlib还支持三维图表的绘制,如三维折线图和曲面图:
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot3D(x, y, z)
plt.show()
其他绘图工具
除了Matplotlib,还有一些基于其上的高级绘图工具,如Seaborn和Pandas内置的绘图功能。这些工具提供了更简洁的API和更美观的默认样式,适合快速绘制复杂图表。
Seaborn
Seaborn是基于Matplotlib的一个高级绘图库,提供了更多样化的图表类型和更好的默认样式:
import seaborn as sns
sns.set(style="whitegrid")
sns.pairplot(df)
plt.show()
Pandas内置绘图
Pandas DataFrame可以直接调用绘图方法,简化了数据可视化的过程:
df.plot(kind='line')
plt.show()
习题
单选题
-
Matplotlib库中,用于导入绘图工具的命令是?
- A)
import matplotlib.pyplot as plt
- B)
import matplotlib as mpl
- C)
import pyplot as plt
- D)
from matplotlib import pyplot
答案:A
- A)
-
在Matplotlib中,用于设置绘图风格的命令是?
- A)
plt.style.use()
- B)
plt.style.set()
- C)
plt.style.change()
- D)
plt.style.context()
答案:A
- A)
-
在Matplotlib中,用于保存图像的命令是?
- A)
plt.save()
- B)
plt.savefig()
- C)
plt.save_image()
- D)
plt.write_image()
答案:B
- A)
-
在Matplotlib中,用于显示图像的命令是?
- A)
plt.show()
- B)
plt.display()
- C)
plt.view()
- D)
plt.render()
答案:A
- A)
-
在Matplotlib中,用于绘制折线图的命令是?
- A)
plt.line()
- B)
plt.plot()
- C)
plt.draw_line()
- D)
plt.curve()
答案:B
- A)
-
在Matplotlib中,用于绘制散点图的命令是?
- A)
plt.scatter()
- B)
plt.dot()
- C)
plt.point()
- D)
plt.spot()
答案:A
- A)
-
在Matplotlib中,用于绘制柱形图的命令是?
- A)
plt.bar()
- B)
plt.column()
- C)
plt.rect()
- D)
plt.hist()
答案:A
- A)
-
在Matplotlib中,用于绘制直方图的命令是?
- A)
plt.hist()
- B)
plt.bar()
- C)
plt.histogram()
- D)
plt.plot_hist()
答案:A
- A)
-
在Matplotlib中,用于绘制误差图的命令是?
- A)
plt.error()
- B)
plt.error_bar()
- C)
plt.err()
- D)
plt.errorplot()
答案:B
- A)
-
在Pandas中,用于直接绘制图像的命令是?
- A)
df.plot()
- B)
df.draw()
- C)
df.graph()
- D)
df.chart()
答案:A
- A)
判断题
-
在Matplotlib中,
plt.show()
命令必须在所有绘图命令之后调用才能显示图像。- 答案:错误(在某些环境中如Jupyter Notebook,无需显式调用
plt.show()
)
- 答案:错误(在某些环境中如Jupyter Notebook,无需显式调用
-
在Matplotlib中,
plt.style.use('style_name')
用于永久设置绘图风格。- 答案:正确
-
在Matplotlib中,
plt.savefig('filename.png')
用于保存图像,文件类型由文件扩展名决定。- 答案:正确
-
在Matplotlib中,
plt.plot(x, y)
用于绘制折线图,其中x和y是数据点的坐标。- 答案:正确
-
在Matplotlib中,
plt.scatter(x, y)
用于绘制散点图,其中x和y是数据点的坐标。- 答案:正确
-
在Matplotlib中,
plt.bar(x, height)
用于绘制柱形图,其中x是柱子的位置,height是柱子的高度。- 答案:正确
-
在Matplotlib中,
plt.hist(data, bins)
用于绘制直方图,其中data是数据,bins是分组区间。- 答案:正确
-
在Matplotlib中,
plt.errorbar(x, y, yerr)
用于绘制误差图,其中x和y是数据点的坐标,yerr是误差范围。- 答案:正确
-
在Pandas中,
df.plot(kind='bar')
用于绘制柱形图,其中kind
参数指定图表类型。- 答案:正确
-
在Pandas中,
df.plot(kind='hist')
用于绘制直方图,其中kind
参数指定图表类型。- 答案:正确
填空题
-
在Matplotlib中,
plt.style.use('style_name')
用于______绘图风格。- 答案:永久设置
-
在Matplotlib中,
plt.savefig('filename.png')
用于______图像,文件类型由文件扩展名决定。- 答案:保存
-
在Matplotlib中,
plt.plot(x, y)
用于绘制______图,其中x和y是数据点的坐标。- 答案:折线
-
在Matplotlib中,
plt.scatter(x, y)
用于绘制______图,其中x和y是数据点的坐标。- 答案:散点
-
在Matplotlib中,
plt.bar(x, height)
用于绘制______图,其中x是柱子的位置,height是柱子的高度。- 答案:柱形
-
在Matplotlib中,
plt.hist(data, bins)
用于绘制______图,其中data是数据,bins是分组区间。- 答案:直方
-
在Matplotlib中,
plt.errorbar(x, y, yerr)
用于绘制______图,其中x和y是数据点的坐标,yerr是误差范围。- 答案:误差
-
在Pandas中,
df.plot(kind='bar')
用于绘制______图,其中kind
参数指定图表类型。- 答案:柱形
-
在Pandas中,
df.plot(kind='hist')
用于绘制______图,其中kind
参数指定图表类型。- 答案:直方
-
在Pandas中,
df.plot(kind='scatter', x='column1', y='column2')
用于绘制______图,其中x
和y
参数指定数据列。- 答案:散点
简答题
-
简述Matplotlib中设置绘图风格的方法及其应用场景。
- 答案:
在Matplotlib中,可以通过plt.style.use('style_name')
来永久设置绘图风格,适用于整个绘图会话;也可以通过with plt.style.context('style_name')
来临时设置绘图风格,适用于特定代码块。设置绘图风格可以帮助我们快速调整图表的整体外观,使其更加美观或适应特定的展示需求。
- 答案:
-
简述Matplotlib中保存图像的方法及其应用场景。
- 答案:
在Matplotlib中,可以通过plt.savefig('filename.png')
来保存图像,文件类型由文件扩展名决定。保存图像的应用场景包括将图表导出为图片文件,以便在报告、演示文稿或其他文档中使用。
- 答案:
第13章 mat pro live画图习题
习题1:绘图风格设置与折线图绘制
题目:
根据给定的两个函数:
- ( y = 1 + e^{-\frac{1}{x}} )
- ( y = \frac{e^x - e{-x}}{ex + e^{-x}} )
请完成以下任务:
- 开启
mat flow live inline
功能。 - 导入
mat pro live
和文派
库。 - 设置绘图风格为
sea bone white g
。 - 绘制两个函数的折线图,并对线条的颜色、形状、粗细进行设置。
- 第一个函数使用默认风格。
- 第二个函数的线条粗细设为10,颜色设为绿色。
- 对数据点的形状、大小和颜色进行设置。
- 第一个图像的形状点设为加号。
- 第二个图像的形状点设为星号。
答案:
- 开启
mat flow live inline
功能。 - 导入
mat pro live
和文派
库。 - 设置绘图风格为
sea bone white g
。 - 绘制两个函数的折线图,并对线条的颜色、形状、粗细进行设置。
- 第一个函数使用默认风格。
- 第二个函数的线条粗细设为10,颜色设为绿色。
- 对数据点的形状、大小和颜色进行设置。
- 第一个图像的形状点设为加号。
- 第二个图像的形状点设为星号。
习题2:坐标轴范围与标签设置
题目:
调整坐标轴的范围和刻度大小,并增加坐标轴标签和图像标题。
- 将 x 坐标轴范围限定在 -2 到 10 之间。
- 将 y 坐标轴范围限定在 0 到 3 之间。
- 使用
x tickets
或y tickets
设置 x 轴和 y 轴的刻度,每隔 0.5 增加一步。 - 设置 x 轴标签、y 轴标签和图像标题。
- 标题设置为第一个函数的关系式。
- 第二个函数的关系式写在 x 轴标签上,y 写在 y 轴标签上。
答案:
- 将 x 坐标轴范围限定在 -2 到 10 之间。
- 将 y 坐标轴范围限定在 0 到 3 之间。
- 使用
x tickets
或y tickets
设置 x 轴和 y 轴的刻度,每隔 0.5 增加一步。 - 设置 x 轴标签、y 轴标签和图像标题。
- 标题设置为第一个函数的关系式。
- 第二个函数的关系式写在 x 轴标签上,y 写在 y 轴标签上。
习题3:图例、箭头和文字添加
题目:
增加图例、箭头和文字,并保存图像到本地。
- 使用
plate.annotate
设置箭头,指定箭头指向 (5, 1)。 - 将文字写在 (3, 0.75) 位置,字体大小为 15。
- 将最终绘制好的图像保存到本地。
答案:
- 使用
plate.annotate
设置箭头,指定箭头指向 (5, 1)。 - 将文字写在 (3, 0.75) 位置,字体大小为 15。
- 将最终绘制好的图像保存到本地。
习题4:散点图绘制
题目:
绘制散点图,根据 y 值的大小进行颜色配置,并设置点的大小和透明度。
- 使用
scatter
函数绘制散点图。 - 颜色根据 y 值的大小在
CC map
中映射。 - 点的大小依赖于对应位置的随机数列的值。
- 设置透明度。
答案:
- 使用
scatter
函数绘制散点图。 - 颜色根据 y 值的大小在
CC map
中映射。 - 点的大小依赖于对应位置的随机数列的值。
- 设置透明度。
习题5:柱形图绘制
题目:
绘制柱形图,包括普通柱形图、横向柱形图、累加柱形图和并列柱形图。
- 使用
bar
函数绘制普通柱形图。 - 使用
barh
函数绘制横向柱形图。 - 绘制累加柱形图时,注意第二个图形的
bottom
参数应为第一个柱形图的高度。 - 绘制并列柱形图时,注意第二个图形的 x 偏移量。
答案:
- 使用
bar
函数绘制普通柱形图。 - 使用
barh
函数绘制横向柱形图。 - 绘制累加柱形图时,注意第二个图形的
bottom
参数应为第一个柱形图的高度。 - 绘制并列柱形图时,注意第二个图形的 x 偏移量。
习题6:多子图绘制
题目:
绘制 2x2 多子图,包括给定的两个函数、正弦函数和余弦函数。
- 绘制 2x2 多子图,分别为给定的两个函数、正弦函数和余弦函数。
答案:
- 绘制 2x2 多子图,分别为给定的两个函数、正弦函数和余弦函数。
习题7:直方图绘制
题目:
构造标准正态分布,并绘制频次直方图、概率密度直方图和累积概率直方图。
- 构造标准正态分布。
- 绘制频次直方图。
- 绘制概率密度直方图。
- 绘制累积概率直方图。
答案:
- 构造标准正态分布。
- 绘制频次直方图。
- 绘制概率密度直方图。
- 绘制累积概率直方图。
习题8:误差图绘制
题目:
生成一系列 xy 数据,并随机生成一系列误差 dy,绘制误差图。
- 使用
errorbar
函数绘制误差图。 - 选取 25 个点。
答案:
- 使用
errorbar
函数绘制误差图。 - 选取 25 个点。
习题9:面向对象绘图
题目:
使用面向对象方法绘制画中画。
- 获取
fig
对象。 - 添加图形区域并在其中绘制图形。
- 第一个图像是红色的,范围是 (0, 0) 到 (1, 1)。
- 第二个图像是绿色的,范围是 (0.5, 0.5) 到 (0.5, 0.5)。
答案:
- 获取
fig
对象。 - 添加图形区域并在其中绘制图形。
- 第一个图像是红色的,范围是 (0, 0) 到 (1, 1)。
- 第二个图像是绿色的,范围是 (0.5, 0.5) 到 (0.5, 0.5)。
习题10:三维图形绘制
题目:
使用 mpl_toolkits
中的 mplot3d
工具绘制三维图形。
- 导入
mplot3d
模块。 - 使用
add_subplot
添加 3D 图形区域。 - 绘制三维图形。
答案:
- 导入
mplot3d
模块。 - 使用
add_subplot
添加 3D 图形区域。 - 绘制三维图形。
习题11:cb on风格绘图
题目:
使用 cb on 风格绘制图,并与 mat pro live 风格进行对比。
- 使用
cb on
风格绘制给定的两个函数。 - 对比两种风格的效果。
答案:
- 使用
cb on
风格绘制给定的两个函数。 - 对比两种风格的效果。
习题12:pandas绘图
题目:
使用 pandas 进行绘图,包括线形图、柱形图、散点图和直方图。
- 加载
鸢尾花
数据集。 - 绘制线形图、柱形图、散点图和直方图。
答案:
- 加载
鸢尾花
数据集。 - 绘制线形图、柱形图、散点图和直方图。