annotate matplotlib

annotate matplotlib

参考:annotate matplotlib

1. 基本用法

在Matplotlib中,annotate()函数是用来在图形上添加注释的。可以选择在图中的任何位置添加注释,包括指定的坐标点、数据点或者箭头指向的位置。

示例代码:

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.annotate('This point', (3, 9), xytext=(2, 10),
             arrowprops=dict(facecolor='black', shrink=0.05))
plt.show()

Output:

annotate matplotlib

运行结果会在图中添加一个指向坐标(3, 9)的注释,注释内容为”This point”,并且有箭头指向。

2. 指定箭头属性

在annotate()函数中,可以通过arrowprops参数来指定箭头的属性,如颜色、箭头的起始点和终点位置、箭头的长度等。

示例代码:

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.annotate('This point', (3, 9), xytext=(2, 10),
             arrowprops=dict(arrowstyle='->', connectionstyle='angle,angleA=0,angleB=90,rad=10', color='red'))
plt.show()

Output:

annotate matplotlib

运行结果会在图中添加一个指向坐标(3, 9)的注释,注释内容为”This point”,箭头按照指定属性进行绘制。

3. 使用文本框

除了在annotate()函数中指定注释的内容外,还可以添加一个文本框来显示更多信息。

示例代码:

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.annotate('This point', (3, 9), xytext=(2, 10),
             bbox=dict(boxstyle='round,pad=0.5', fc='cyan', ec='black', lw=2))
plt.show()

Output:

annotate matplotlib

运行结果会在图中添加一个指向坐标(3, 9)的注释,注释内容为”This point”,并且有一个带有圆角的文本框。

4. 添加多个注释点

在Matplotlib中,可以添加多个注释点来标注图形的不同部分,例如多个数据点、特定区域等。

示例代码:

import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y)

for i, txt in enumerate(['Point1', 'Point2', 'Point3', 'Point4']):
    plt.annotate(txt, (x[i], y[i]), xytext=(x[i]+0.5, y[i]+1),
                 arrowprops=dict(facecolor='black', shrink=0.05))

plt.show()

Output:

annotate matplotlib

运行结果会在图中添加四个注释点,分别标注”Point1″、”Point2″、”Point3″、”Point4″。

5. 控制文本的字体和样式

可以通过设置字体大小、颜色、样式等属性来控制注释部分的外观。

示例代码:

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.annotate('This point', (3, 9), xytext=(2, 10),
             fontdict={'family': 'serif', 'color': 'blue', 'weight': 'bold', 'size': 12})
plt.show()

运行结果会在图中添加一个指向坐标(3, 9)的注释,注释内容为”This point”,并且字体大小为12,颜色为蓝色,加粗。

6. 添加注释文本的旋转

有时候需要控制注释文本的旋转角度,可以通过设置rotation属性来实现。

示例代码:

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.annotate('This point', (3, 9), xytext=(2, 10),
             rotation=45)
plt.show()

Output:

annotate matplotlib

运行结果会在图中添加一个指向坐标(3, 9)的注释,注释内容为”This point”,并且旋转角度为45度。

7. 在不同坐标系中添加注释

除了在图形坐标系中添加注释外,还可以在不同坐标系中添加注释,例如数据坐标系、指定坐标系等。

示例代码:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

ax.plot([1, 2, 3, 4], [1, 4, 9, 16])

bbox_props = dict(boxstyle='rarrow,pad=0.3', fc='cyan', ec='b', lw=2)

t = ax.annotate('Data point', (3, 9), (2, 10), arrowprops=dict(arrowstyle='->'), bbox=bbox_props)

plt.show()

Output:

annotate matplotlib

运行结果会在图中添加一个指向数据点(3, 9)的注释,注释内容为”Data point”。

8. 使用自定义箭头样式

除了Matplotlib提供的默认箭头样式外,还可以使用自定义的箭头样式来标注图形。

示例代码:

import matplotlib.pyplot as plt
from matplotlib.patches import FancyArrowPatch

plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
arr = FancyArrowPatch(posA=(2, 8), posB=(4, 12), arrowstyle='fancy',
                      mutation_scale=15, color='orange')
plt.gca().add_patch(arr)
plt.show()

Output:

annotate matplotlib

运行结果会在图中添加一个自定义样式的箭头,箭头起始点为(2, 8),终点为(4, 12),颜色为橙色。

9. 在图中添加多个箭头

除了添加单个箭头外,还可以在图形中添加多个箭头,以标注图形的不同部分。

示例代码:

import matplotlib.pyplot as plt
from matplotlib.patches import FancyArrowPatch

plt.plot([1, 2, 3, 4], [1, 4, 9, 16])

arr1 = FancyArrowPatch(posA=(1, 1), posB=(3, 9), arrowstyle='->',
                        mutation_scale=15, color='green')
plt.gca().add_patch(arr1)

arr2 = FancyArrowPatch(posA=(2, 4), posB=(4, 16), arrowstyle='->',
                        mutation_scale=15, color='blue')
plt.gca().add_patch(arr2)

plt.show()

Output:

annotate matplotlib

运行结果会在图中添加两个箭头,分别连接(1, 1)至(3, 9)和(2, 4)至(4, 16)。

10. 控制箭头的长度和风格

可以通过设置mutation_scale参数来控制箭头的长度,箭头的风格可以通过mutation_scale参数来调整。

示例代码

import matplotlib.pyplot as plt
from matplotlib.patches import FancyArrowPatch

plt.plot([1, 2, 3, 4], [1, 4, 9, 16])

arr1 = FancyArrowPatch(posA=(1, 1), posB=(3, 9), arrowstyle='fancy',
                        mutation_scale=20, color='red')
plt.gca().add_patch(arr1)

arr2 = FancyArrowPatch(posA=(2, 4), posB=(4, 16), arrowstyle='simple',
                        mutation_scale=30, color='purple')
plt.gca().add_patch(arr2)

plt.show()

Output:

annotate matplotlib

运行结果会在图中添加两个箭头,一个箭头风格为fancy,长度为20,颜色为红色,另一个箭头风格为simple,长度为30,颜色为紫色。

11. 控制箭头的透明度

可以通过设置alpha参数来控制箭头的透明度,使得箭头在图形中更加自然。

示例代码:

import matplotlib.pyplot as plt
from matplotlib.patches import FancyArrowPatch

plt.plot([1, 2, 3, 4], [1, 4, 9, 16])

arr = FancyArrowPatch(posA=(1, 1), posB=(3, 9), arrowstyle='fancy',
                      mutation_scale=15, color='green', alpha=0.5)
plt.gca().add_patch(arr)

plt.show()

Output:

annotate matplotlib

运行结果会在图中添加一个半透明的箭头,连接(1, 1)至(3, 9),颜色为绿色。

12. 在3D图形中添加注释

除了在2D图形中添加注释外,Matplotlib也支持在3D图形中添加注释,可以标注不同数据点的位置。

示例代码:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = np.array([1, 2, 3, 4])
y = np.array([1, 2, 3, 4])
z = np.array([1, 4, 9, 16])

ax.plot(x, y, z)

for i, txt in enumerate(['Point1', 'Point2', 'Point3', 'Point4']):
    ax.text(x[i], y[i], z[i], txt, color='red')

plt.show()

Output:

annotate matplotlib

运行结果会在3D图形中添加四个注释点,分别标注”Point1″、”Point2″、”Point3″、”Point4″。

13. 添加带有自定义箭头样式的3D注释

在3D图形中也可以添加带有自定义箭头样式的注释,以标识图形的不同部分。

示例代码:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.patches import FancyArrowPatch

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = np.array([1, 2, 3, 4])
y = np.array([1, 2, 3, 4])
z = np.array([1, 4, 9, 16])

arr = FancyArrowPatch((2,2,4), (4,4,16), arrowstyle='-|>', mutation_scale=15, color='purple')

for i in range(len(x)):
    ax.text(x[i], y[i], z[i], f'Point{i+1}', color='blue')
    ax.add_patch(arr)

plt.show()

运行结果会在3D图形中添加四个注释点,分别标注”Point1″、”Point2″、”Point3″、”Point4″,同时添加一个连接(2, 2, 4)至(4, 4, 16)的自定义箭头。

14. 控制3D注释的字体样式和大小

在3D图形中添加注释时,也可以控制注释文本的字体样式和大小,以使得注释更加清晰。

示例代码:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = np.array([1, 2, 3, 4])
y = np.array([1, 2, 3, 4])
z = np.array([1, 4, 9, 16])

for i, txt in enumerate(['Point1', 'Point2', 'Point3', 'Point4']):
    ax.text(x[i], y[i], z[i], txt, color='green', fontsize=12, style='italic')

plt.show()

Output:

annotate matplotlib

运行结果会在3D图形中添加四个注释点,分别标注”Point1″、”Point2″、”Point3″、”Point4″,并且字体为斜体绿色。

15. 在图中添加文本

除了添加箭头和注释外,还可以直接在图中添加文字来标识图形的不同部分。

示例代码:

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.text(2, 8, 'Text Example', fontsize=12, color='blue')
plt.show()

Output:

annotate matplotlib

运行结果会在图中添加一个文本”Text Example”,位置在坐标(2, 8),字体大小为12,颜色为蓝色。

16. 添加多个文本

在图中可以添加多个文本信息,用于标记不同的数据点或者图形。

示例代码:

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [1, 4, 9, 16])

plt.text(1, 1, 'Point1', fontsize=10, color='red')
plt.text(2, 4, 'Point2', fontsize=10, color='blue')
plt.text(3, 9, 'Point3', fontsize=10, color='green')
plt.text(4, 16, 'Point4', fontsize=10, color='purple')

plt.show()

Output:

annotate matplotlib

运行结果会在图中添加四个文本,分别标注”Point1″、”Point2″、”Point3″、”Point4″。

17. 控制文本的对齐方式

可以通过设置horizontalalignment和verticalalignment参数来控制文本的对齐方式,使得文本在图形中居中或者左右对齐等。

示例代码:

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.text(2, 8, 'Centered Text', fontsize=12, color='blue',
         horizontalalignment='center', verticalalignment='center')
plt.show()

Output:

annotate matplotlib

运行结果会在图中添加一个居中对齐的文本”Centered Text”,位置在坐标(2, 8)。

18. 在图中添加带有背景框的文本

在Matplotlib中,可以在文本周围添加一个带有背景框的文本框,以突出显示文本信息。

示例代码:

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.text(2, 8, 'Framed Text', fontsize=12, color='red', bbox=dict(facecolor='yellow', alpha=0.5))
plt.show()

Output:

annotate matplotlib

运行结果会在图中添加一个带有黄色背景框的文本”Framed Text”,位置在坐标(2, 8),颜色为红色。

19. 在图中添加图例

当图中包含多条曲线时,可以添加图例来说明各个曲线代表的含义,以便更好地理解图形。

示例代码:

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [1, 4, 9, 16], label='Line 1')
plt.plot([1, 2, 3, 4], [2, 3, 5, 8], label='Line 2')
plt.legend()
plt.show()

Output:

annotate matplotlib

运行结果会在图中添加一个图例,分别标注”Line 1″和”Line 2″代表的曲线。

20. 控制图例的位置和样式

可以通过设置loc参数来控制图例的位置,使得图例可以放置在图形的任意位置。

示例代码:

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [1, 4, 9, 16], label='Line 1')
plt.plot([1, 2, 3, 4], [2, 3, 5, 8], label='Line 2')
plt.legend(loc='upper left', fontsize='large', fancybox=True, shadow=True)
plt.show()

Output:

annotate matplotlib

运行结果会在图中添加一个图例,位置在左上角,字体大小为大号,带有阴影效果。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程