当前位置: 首页> 房产> 建材 > matplotLib在图中标出最后一个点的值

matplotLib在图中标出最后一个点的值

时间:2025/7/12 12:32:15来源:https://blog.csdn.net/xiong_xin/article/details/140859513 浏览次数:0次

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np# 生成100个随机数据
data = np.random.rand(100)# 绘制数据
plt.plot(data, label='Data Points')# 获取最后一个数据点的位置和值
last_x = len(data) - 1
last_y = data[-1]# 用红圈标出最后一个点
plt.plot(last_x, last_y, 'ro')# 在图上标出最后一个点的值
plt.annotate(f'{last_y:.2f}',xy=(last_x, last_y), xytext=(last_x + 2, last_y), fontsize=12,  # 字体大小color='red'#  textcoords='offset points',#  ha='left', #  va='bottom')# 设置标题和坐标轴标签
plt.title('Plot with Last Data Point Highlighted and Labeled')
plt.xlabel('Index')
plt.ylabel('Value')# 显示图形
plt.legend()
plt.savefig("test")

这段代码将最后一个数据点的值用放大的红色字体标注出来,并在图上用红圈圈出该点。

plt.annotate 是 Matplotlib 用于在图形上添加注释(文本)的函数。以下是 plt.annotate 函数的常用参数及其对应的含义:

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

参数解释

  1. text:

    • 要显示的注释文本内容。
  2. xy:

    • 一个包含两个元素的元组或列表,用于指定注释指向的位置,格式为 (x, y)
    • 这个位置表示的是注释的目标点。
  3. xytext (可选):

    • 一个包含两个元素的元组或列表,用于指定注释文本的位置,格式为 (x, y)
    • 如果不指定,默认值为 xy
  4. xycoords (可选):

    • 指定 xy 所使用的坐标系,默认值是 'data',表示数据坐标。
    • 其他常见选项包括 'figure points'(图形窗口的点)、'figure pixels'(图形窗口的像素)、'axes points'(轴内的点)、'axes fraction'(轴内的分数)。
  5. textcoords (可选):

    • 指定 xytext 所使用的坐标系,默认值是 xycoords 的值。
    • 可选值与 xycoords 类似。
  6. arrowprops (可选):

    • 一个字典,用于定义箭头的样式。常见的键包括:
      • 'arrowstyle':箭头样式,例如 '->''-[' 等。
      • 'color':箭头颜色。
      • 'shrink':缩小箭头的比例。
      • 'linewidth':箭头的线宽。
  7. 其他 **kwargs 参数:

    • 这些是与注释文本相关的其他关键字参数,如 fontsize(字体大小)、color(字体颜色)、horizontalalignment(水平对齐)、verticalalignment(垂直对齐)等。

例子

plt.annotate('This is a point',xy=(10, 10),         # 注释指向的点xytext=(15, 15),     # 注释文本的位置textcoords='offset points', # 以偏移量作为坐标系arrowprops=dict(facecolor='black', arrowstyle='->'), # 添加箭头fontsize=12,         # 字体大小color='red')         # 字体颜色

在这个例子中,注释文本 This is a point 会显示在图形中的某个位置(由 xytext 指定),并且有一个箭头指向图形中的点 (10, 10)。字体大小设置为 12,颜色为红色。

使用ax版本

subplots 中,你可以通过在绘制图形后,使用 ax.annotate 方法来显示最后一个数据点的值。这里是一个简单的例子,展示如何在 subplots 中标注最后一个点的值。

import matplotlib.pyplot as plt
import numpy as np# 生成两个不同的数据集
data1 = np.random.rand(100)
data2 = np.random.rand(100)# 创建子图
fig, axs = plt.subplots(2)# 绘制第一个数据集
axs[0].plot(data1, label='Data 1')
last_x1 = len(data1) - 1
last_y1 = data1[-1]
axs[0].plot(last_x1, last_y1, 'ro')  # 用红色圆圈标记最后一个点
axs[0].annotate(f'{last_y1:.2f}', xy=(last_x1, last_y1), xytext=(last_x1 + 2, last_y1),textcoords='offset points', ha='left', va='bottom', fontsize=12, color='red')# 绘制第二个数据集
axs[1].plot(data2, label='Data 2')
last_x2 = len(data2) - 1
last_y2 = data2[-1]
axs[1].plot(last_x2, last_y2, 'ro')  # 用红色圆圈标记最后一个点
axs[1].annotate(f'{last_y2:.2f}', xy=(last_x2, last_y2), xytext=(last_x2 + 2, last_y2),textcoords='offset points', ha='left', va='bottom', fontsize=12, color='red')# 设置标题和坐标轴标签
axs[0].set_title('Plot 1')
axs[1].set_title('Plot 2')# 显示图形
plt.tight_layout()
plt.show()

解释:

  1. 创建子图:使用 plt.subplots(2) 创建了两个子图(可以根据需要调整子图数量)。
  2. 绘制数据:在每个子图中,分别绘制 data1data2
  3. 标注最后一个点
    • 使用 ax.plot 方法绘制图形,并用红色圆圈标记最后一个点。
    • 使用 ax.annotate 方法在每个子图中标注最后一个数据点的值。xy 参数指定点的位置,xytext 指定文本的位置和偏移,textcoords 指定坐标系。
  4. 布局调整plt.tight_layout() 自动调整子图的布局以避免重叠。

运行这段代码后,你会看到每个子图中最后一个点都被标记并显示其数值。

关键字:matplotLib在图中标出最后一个点的值

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: