当前位置:   article > 正文

Matplotlib 高阶技巧:注解和不同坐标系的使用_matplotlib y轴不同的坐标

matplotlib y轴不同的坐标

Matplotlib 高阶技巧:注解和不同坐标系的使用

注解(Annotations)

在图表中添加注解可以帮助我们突出显示关键点或解释数据的特定部分。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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在这个例子中,我们在一个简单的正弦波图上添加了一个注解,标记了局部最大值点。annotate() 函数的参数如下:

  • text:注解的文本内容。
  • xy:箭头指向的点的坐标。
  • xytext:注解文本的位置。
  • arrowprops:一个字典,用来定义箭头的属性,比如颜色和缩放比例。

arrowpropsannotate 函数中的一个参数,用于控制注释箭头的属性。arrowprops 是一个字典,可以包含以下键值对

  • facecolor:箭头的前脸颜色。
  • edgecolor:箭头的边缘颜色。
  • shrinkA:从箭头尾部缩进的长度比例。
  • shrinkB:从箭头头部缩进的长度比例。
  • mutation_scale:文本和箭头之间的缩进比例。

例如,以下代码将创建一个带有红色箭头的注释:

ax.annotate('Max', xy=(5, 10), xytext=(5, 12), arrowprops=dict(facecolor='red', shrink=0.05))
  • 1

在这个例子中,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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这个示例中,我们使用了更多的参数来定制注解的外观,包括字体大小、颜色以及水平和垂直对齐方式。

使用不同的坐标系

在同一个图表中使用不同的坐标系可以帮助我们更好地比较和展示不同类型的数据。Matplotlib 提供了 twinx()twiny() 函数来实现这一点。

创建共享 x 轴但不同 y 轴的图表
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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在这个示例中,我们创建了一个图表,两个 y 轴分别显示正弦和余弦曲线。twinx() 函数创建了一个新的 y 轴,并与现有的 x 轴共享。

创建共享 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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在这个示例中,我们创建了一个图表,两个 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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

在这个示例中,我们创建了一个包含两个 y 轴的图表,并在两个 y 轴上分别添加了注解。这种方法可以帮助我们同时展示和解释多个数据集。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/964987
推荐阅读
相关标签
  

闽ICP备14008679号