赞
踩
在图表中添加注解可以帮助我们突出显示关键点或解释数据的特定部分。Matplotlib 提供了一个强大的 annotate()
函数来实现这一点。
import matplotlib.pyplot as plt import numpy as np # 创建数据 x = np.linspace(0, 10, 100) y = np.sin(x) # 创建图表 fig, ax = plt.subplots() ax.plot(x, y) # 添加注解 ax.annotate('Local max', xy=(1.57, 1), xytext=(3, 1.5), arrowprops=dict(facecolor='black', shrink=0.05)) plt.show()
在这个例子中,我们在一个简单的正弦波图上添加了一个注解,标记了局部最大值点。annotate()
函数的参数如下:
text
:注解的文本内容。xy
:箭头指向的点的坐标。xytext
:注解文本的位置。arrowprops
:一个字典,用来定义箭头的属性,比如颜色和缩放比例。arrowprops
是 annotate
函数中的一个参数,用于控制注释箭头的属性。arrowprops
是一个字典,可以包含以下键值对:
facecolor
:箭头的前脸颜色。edgecolor
:箭头的边缘颜色。shrinkA
:从箭头尾部缩进的长度比例。shrinkB
:从箭头头部缩进的长度比例。mutation_scale
:文本和箭头之间的缩进比例。例如,以下代码将创建一个带有红色箭头的注释:
ax.annotate('Max', xy=(5, 10), xytext=(5, 12), arrowprops=dict(facecolor='red', shrink=0.05))
在这个例子中,facecolor='red'
设置了箭头的颜色为红色,shrink=0.05
表示从箭头尾部缩进 5% 的长度。
你可以使用更多的参数来自定义注解的外观。例如:
fig, ax = plt.subplots()
ax.plot(x, y)
ax.annotate('Important point', xy=(7, np.sin(7)), xytext=(5, -0.5),
arrowprops=dict(facecolor='red', shrink=0.05, width=2, headwidth=8),
fontsize=12, color='blue', horizontalalignment='right', verticalalignment='top')
plt.show()
在这个示例中,我们使用了更多的参数来定制注解的外观,包括字体大小、颜色以及水平和垂直对齐方式。
在同一个图表中使用不同的坐标系可以帮助我们更好地比较和展示不同类型的数据。Matplotlib 提供了 twinx()
和 twiny()
函数来实现这一点。
fig, ax1 = plt.subplots() x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) # 第一个 y 轴 ax1.plot(x, y1, 'g-') ax1.set_xlabel('X data') ax1.set_ylabel('Y1 data', color='g') # 共享 x 轴的第二个 y 轴 ax2 = ax1.twinx() ax2.plot(x, y2, 'b-') ax2.set_ylabel('Y2 data', color='b') plt.show()
在这个示例中,我们创建了一个图表,两个 y 轴分别显示正弦和余弦曲线。twinx()
函数创建了一个新的 y 轴,并与现有的 x 轴共享。
fig, ax1 = plt.subplots() x1 = np.linspace(0, 10, 100) x2 = np.linspace(1, 5, 100) y = np.sin(x1) # 第一个 x 轴 ax1.plot(x1, y, 'g-') ax1.set_xlabel('X1 data') ax1.set_ylabel('Y data', color='g') # 共享 y 轴的第二个 x 轴 ax2 = ax1.twiny() ax2.plot(x2, y, 'b-') ax2.set_xlabel('X2 data') plt.show()
在这个示例中,我们创建了一个图表,两个 x 轴分别显示不同范围的正弦曲线。twiny()
函数创建了一个新的 x 轴,并与现有的 y 轴共享。
最后,我们来看一个结合注解和不同坐标系的例子:
fig, ax1 = plt.subplots() x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x)+10 ax1.plot(x, y1, 'g-') ax1.set_xlabel('X data') ax1.set_ylabel('Y1 data', color='g') ax1.annotate('Local max', xy=(1.57, 1), xytext=(3, 1.5), arrowprops=dict(facecolor='black', shrink=0.05)) ax2 = ax1.twinx() ax2.plot(x, y2, 'b-') ax2.set_ylabel('Y2 data', color='b') ax2.annotate('Local min', xy=(4.71, -1), xytext=(6, -1.5), arrowprops=dict(facecolor='red', shrink=0.05)) plt.show()
在这个示例中,我们创建了一个包含两个 y 轴的图表,并在两个 y 轴上分别添加了注解。这种方法可以帮助我们同时展示和解释多个数据集。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。