Python 基础入门 Day24

欢迎来到 Python 基础入门 Day24!在今天的课程中,我们将聚焦于 Matplotlib 的高级可视化技巧,帮助你创建更加丰富和专业的图表。通过对数据的可视化,我们可以更直观地观察数据特性,从而做出更准确的分析与判断。


目录

  1. Matplotlib 的高级自定义功能
  2. 子图布局与多图显示
  3. 图表样式与配色方案
  4. 高级注释与交互功能
  5. 小结与练习

一、Matplotlib 的高级自定义功能

在基本的图表上,Matplotlib 提供了很多参数来自定义细节,比如标题、坐标轴标签、网格线等。

1.1 图表标题和坐标轴设置

import matplotlib.pyplot as plt import numpy as np # 示例数据 x = np.linspace(0, 10, 100) y = np.sin(x) # 创建图表并设置标题和坐标轴 plt.plot(x, y, label="Sine Wave") plt.title("Advanced Matplotlib Customization", fontsize=16, fontweight="bold") plt.xlabel("X Axis", fontsize=12) plt.ylabel("Y Axis", fontsize=12) plt.legend() plt.grid(True) # 添加网格线 plt.show()

1.2 设置轴的范围与刻度

可以通过 xlim()ylim() 来调整坐标轴范围,也可以自定义刻度。

plt.plot(x, y, label="Sine Wave") plt.xlim(0, 10) # 设置 X 轴范围 plt.ylim(-1.5, 1.5) # 设置 Y 轴范围 plt.xticks(np.arange(0, 11, 1)) # 自定义 X 轴刻度 plt.yticks(np.arange(-1.5, 2, 0.5)) # 自定义 Y 轴刻度 plt.grid(True) plt.legend() plt.show()


二、子图布局与多图显示

使用 plt.subplots() 可以在一个图表中显示多个子图,非常适合比较不同数据集。

2.1 创建简单的子图

fig, axes = plt.subplots(2, 1, figsize=(8, 6)) # 创建两行一列的子图 # 第一幅子图 axes[0].plot(x, np.sin(x), label="Sine") axes[0].set_title("Sine Function") axes[0].legend() # 第二幅子图 axes[1].plot(x, np.cos(x), label="Cosine", color="red") axes[1].set_title("Cosine Function") axes[1].legend() plt.tight_layout() # 自动调整布局 plt.show()

2.2 更复杂的子图布局

可以通过 gridspec 模块创建复杂的子图布局。

import matplotlib.gridspec as gridspec # 创建子图布局 fig = plt.figure(figsize=(8, 6)) gs = gridspec.GridSpec(2, 2, figure=fig) # 子图1 ax1 = fig.add_subplot(gs[0, 0]) ax1.plot(x, np.sin(x), label="Sine") ax1.set_title("Sine Wave") # 子图2 ax2 = fig.add_subplot(gs[0, 1]) ax2.plot(x, np.cos(x), label="Cosine", color="red") ax2.set_title("Cosine Wave") # 子图3(跨两列) ax3 = fig.add_subplot(gs[1, :]) ax3.plot(x, np.tan(x), label="Tangent", color="green") ax3.set_title("Tangent Wave") ax3.set_ylim(-5, 5) plt.tight_layout() plt.show()


三、图表样式与配色方案

Matplotlib 提供了多种预定义样式,使图表更具美感。

3.1 应用样式

plt.style.use("seaborn-darkgrid") # 使用 seaborn-darkgrid 样式 plt.plot(x, y, label="Sine Wave") plt.title("Styled Plot") plt.legend() plt.show()

3.2 自定义配色

可以通过 cmap 参数设置渐变颜色。

colors = plt.cm.viridis(np.linspace(0, 1, 10)) # 生成 10 种渐变颜色 for i, c in enumerate(colors): plt.plot(x, y + i * 0.2, color=c, label=f"Line {i+1}") plt.legend() plt.title("Custom Colormap") plt.show()


四、高级注释与交互功能

4.1 添加注释

通过 annotate() 可以在图表中添加注释。

plt.plot(x, y, label="Sine Wave") plt.title("Annotation Example") # 添加注释 plt.annotate("Local Max", xy=(np.pi / 2, 1), xytext=(2, 1.5), arrowprops=dict(facecolor="black", arrowstyle="->")) plt.legend() plt.show()

4.2 交互式工具

利用 Matplotlib 的 widgets 模块,可以创建交互式控件。

from matplotlib.widgets import Slider # 创建图表 fig, ax = plt.subplots() plt.subplots_adjust(bottom=0.25) # 为滑块留出空间 line, = plt.plot(x, y, lw=2) # 添加滑块 ax_slider = plt.axes([0.25, 0.1, 0.65, 0.03]) slider = Slider(ax_slider, "Freq", 0.1, 2.0, valinit=1.0) # 更新函数 def update(val): freq = slider.val line.set_ydata(np.sin(freq * x)) fig.canvas.draw_idle() slider.on_changed(update) plt.show()


五、小结与练习

今日总结:

  1. 学习了如何对图表进行高级自定义,包括标题、坐标轴和刻度设置。
  2. 探索了子图布局和复杂的多图显示。
  3. 使用了 Matplotlib 样式和配色方案美化图表。
  4. 学习了添加注释和交互功能。

今日练习:

  1. 使用随机数据,创建一张包含 4 个子图的布局,每个子图显示不同类型的曲线(如正弦、余弦等)。
  2. 应用不同的 Matplotlib 样式(如 ggplotseaborn-poster),美化图表。
  3. 在图表上添加至少 3 个注释,用箭头指向关键点。
  4. 使用交互滑块调整正弦波的频率和振幅。

下一节预告:在 Day25 中,我们将学习 Seaborn 高级可视化工具,进一步提升数据的可视化效果。敬请期待!


今天的课程到此结束,感谢你的学习!如有疑问,欢迎讨论 😊。

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注