You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Matplotlib交互模式下修改鼠标悬停时数值的显示格式

修改Matplotlib悬停数值的显示格式

如果要让悬停时的数值不再以科学计数法呈现,分以下几种场景处理:

1. 自定义悬停坐标的显示格式

你已经在使用format_coord自定义坐标显示,只需调整格式化逻辑,就能避免科学计数法,直接显示整数或自定义格式:

def format_coordinates_int(x, y):
    # 四舍五入转整数,用%d或%i格式化避免科学计数法
    x_int = int(round(x))
    y_int = int(round(y))
    return f"X={x_int:d} Y={y_int:d}"

axes.format_coord = format_coordinates_int

如果需要更灵活的格式(比如带千分位分隔的整数),可以用Python字符串格式化语法:

def format_coordinates_custom(x, y):
    x_int = int(round(x))
    y_int = int(round(y))
    # 千分位分隔格式
    return f"X={x_int:,d} Y={y_int:,d}"

2. 显示额外关联数值并自定义格式

如果“下方显示的对应数值”是和数据点绑定的额外数据集(不是坐标本身),可以把数据集传入格式化函数,找到对应位置的数值后再格式化:

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
# 示例数据
x_data = np.arange(10)
y_data = np.array([100000, 200000, 300000, 400000, 500000, 600000, 700000, 800000, 900000, 1000000])
extra_values = y_data * 2  # 关联的额外数值

ax.plot(x_data, y_data)

def format_coord(x, y):
    # 找到最接近当前x坐标的数据点索引
    idx = np.argmin(np.abs(x_data - x))
    # 格式化额外数值为整数(避免科学计数法)
    val = extra_values[idx]
    x_int = int(round(x))
    y_int = int(round(y))
    return f"X={x_int:d} Y={y_int:d} 对应数值={val:d}"

ax.format_coord = format_coord

plt.show()

3. 全局禁用科学计数法

如果想让整个图表(包括坐标轴刻度和悬停显示)都不用科学计数法,可以设置全局格式化器:

from matplotlib.ticker import ScalarFormatter

# 获取当前轴
ax = plt.gca()
# 设置Y轴格式化器,禁用科学计数法
formatter = ScalarFormatter(useOffset=False, useMathText=False)
formatter.set_scientific(False)
ax.yaxis.set_major_formatter(formatter)

内容的提问来源于stack exchange,提问作者imad.nyc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 00:15:01