Matplotlib - 注解



在 Matplotlib 库中,注解指的是在绘图的特定位置添加文本或标记以提供附加信息或突出显示特定特征的能力。注解允许用户标记数据点并指示趋势或向绘图的不同部分添加描述。

Matplotlib 注解的关键方面

以下是 matplotlib 库中注解的关键方面。

文本注解

数据可视化中的文本注解用于向绘图中的特定点、区域或特征添加解释性或描述性文本。注解有助于突出显示重要信息,提供上下文,或解释可视化数据中的趋势和模式。

标记注解

数据可视化中的标记注解通常涉及在绘图中的特定兴趣点上放置标记或符号,以突出显示或提供有关这些点的附加信息。这些注解可以是文本的或图形的,通常用于引起对重要数据点、峰值、谷值、异常值或可视化表示中任何关键信息的注意。

标注

数据可视化中的标注是指一种特定类型的注解,它使用视觉元素(如箭头、线条或文本)来引起对绘图中特定区域或特征的注意。它们通常用于提供有关特定数据点或感兴趣区域的附加上下文或解释。

Matplotlib 库中的plt.annotate()函数用于向绘图添加注解。它允许我们放置带有指向绘图上特定数据点的可选箭头的文本注解。

语法

以下是 plt.annotate() 函数的语法。

plt.annotate(text, xy, xytext=None, xycoords='data', textcoords='data', arrowprops=None, annotation_clip=None, kwargs)

其中,

  • text (str) − 注解的文本。

  • xy (tuple 或 array) − 要注释的点 (x, y)。

  • xytext (tuple 或 array, 可选) − 放置文本的位置 (x, y)。如果为None,则默认为 `xy`。

  • xycoords (str, Artist 或 Transform, 可选) − 给出`xy`的坐标系。默认为 'data'。

  • textcoords (str, Artist 或 Transform, 可选) − 给出`xytext`的坐标系。默认为 'data'。

  • arrowprops (dict, 可选) − 箭头属性的字典。如果非 None,则从注解到文本绘制箭头。

  • annotation_clip (bool 或 None, 可选) − 如果为True,则只有当注解点在坐标轴内时才会绘制文本。如果为None,则它将取自rcParams["text.clip"]的值。

  • kwargs (可选) − 传递给Text的其他关键字参数。

向绘图添加注解

在这个例子中,我们使用plt.annotate()函数添加一个带有文本'Peak'的注解,该文本位于绘图上的点 (3, 5)。

示例

import matplotlib.pyplot as plt
# Plotting data
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
plt.plot(x, y, marker='o', linestyle='-', color='blue')

# Adding annotation
plt.annotate('Peak', xy=(3, 5), xytext=(3.5, 6), arrowprops=dict(facecolor='black', arrowstyle='->'), fontsize=10)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Annotated Plot')
plt.grid(True)
plt.show()
输出
Matplotlib Annotation

示例

这是一个使用‘plt.annotations’函数向图像添加注解的另一个示例。

import matplotlib.pyplot as plt
# Sample data
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

# Plotting data
plt.plot(x, y, marker='+', linestyle='-')

# Adding an annotation
plt.annotate('Point of Interest', xy=(3, 6), xytext=(3.5, 7), arrowprops=dict(facecolor='black', arrowstyle='->'))
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Annotated Plot')
plt.grid(True)
plt.show()
输出
Matplotlib Annotation

插入统计注解(星号或 p 值)

在这个例子中,我们插入星号或 p 值作为统计注解。

示例

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
x = np.linspace(-1, 1, 5)
y = np.linspace(-2, 2, 5)
mean_x = np.mean(x)
mean_y = np.mean(y)
fig, ax = plt.subplots()
ax.plot(x, y, linestyle='-.')
ax.annotate('*', (mean_y, mean_y), xytext=(-.50, 1), arrowprops=dict(arrowstyle='-|>'))
fig.autofmt_xdate()
plt.show()
输出
Matplotlib Annotation

注释 Matplotlib 散点图

在这个例子中,我们向已绘制的散点图添加注解。

示例

# Import necessary libraries
import matplotlib.pyplot as plt
import numpy as np

# Create data points to be plotted
x = np.random.rand(30)
y = np.random.rand(30)

# Define the scatter plot using Matplotlib
fig, ax = plt.subplots()
ax.scatter(x, y)

# Add annotations to specific data points using text or arrow annotations
ax.annotate('Outlier', xy=(0.9, 0.9), xytext=(0.7, 0.7),arrowprops=dict(facecolor='black', shrink=0.05))
ax.annotate('Important point', xy=(0.5, 0.3), xytext=(0.3, 0.1),arrowprops=dict(facecolor='red', shrink=0.05))
ax.annotate('Cluster of points', xy=(0.2, 0.5), xytext=(0.05, 0.7),arrowprops=dict(facecolor='green', shrink=0.05))
   
# Adjust the annotation formatting as needed
plt.title('Annotated Scatter Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')

# Show the scatter plot with annotations
plt.show()
输出
Matplotlib Annotation

使用自动放置的箭头注释散点图上的点

在这个例子中,我们使用自动放置的箭头注释散点图上的点。

示例

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
xpoints = np.linspace(1, 10, 25)
ypoints = np.random.rand(25)
labels = ["%.2f" % i for i in xpoints]
plt.scatter(xpoints, ypoints, c=xpoints)
for label, x, y in zip(labels, xpoints, ypoints):
   plt.annotate(
      label,
      xy=(x, y), xytext=(-20, 20),
      textcoords='offset points', ha='right', va='bottom',
      bbox=dict(boxstyle='round,pad=0.5', fc='yellow', alpha=0.5),
      arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=0')
   )
plt.show()
输出
Matplotlib Annotation
广告