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

如何在Matplotlib中将坐标轴及数据悬停值改为十六进制显示?

实现Matplotlib散点图X轴十六进制显示与悬停提示

核心思路

不修改原始数值的排序逻辑,仅将X轴刻度标签转换为十六进制字符串;同时通过悬停工具,将数据点的原始十进制值转换为十六进制格式展示。

完整代码实现

import pandas as pd
from matplotlib import pyplot as plt
import mplcursors  # 用于实现悬停提示功能

columns = ["a", "b"]
df = pd.read_csv("my_file_location.csv", usecols=columns, nrows=5000)

plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

plt.title('Reg / Clock Cycles')
plt.xlabel('Clock Cycles (Hex)', fontsize=10)  # 更新X轴标签说明格式
plt.ylabel('Reg Value (Decimal)', fontsize=10)
scatter = plt.scatter(df.a, df.b)

# 1. 将X轴刻度转换为十六进制显示
ax = plt.gca()
xticks = ax.get_xticks()
# 把每个刻度值转为0x开头的十六进制字符串
ax.set_xticklabels(['0x{:X}'.format(int(tick)) for tick in xticks])

# 2. 设置鼠标悬停时显示十六进制值
cursor = mplcursors.cursor(scatter, hover=True)
@cursor.connect("add")
def on_add(sel):
    x_val = sel.target[0]
    y_val = sel.target[1]
    # 同时展示时钟周期的十六进制、寄存器值的十进制与十六进制
    sel.annotation.set_text(
        f"Clock Cycles: 0x{int(x_val):X}\nReg Value: {int(y_val)} (0x{int(y_val):X})"
    )

plt.show()

关键步骤说明

  • X轴刻度处理:保留原始数值的排序,仅替换刻度的显示文本为十六进制,彻底避免转字符串导致的顺序混乱问题。
  • 悬停提示:借助mplcursors库捕获悬停事件,将原始十进制值转换为十六进制格式后展示,兼顾两种格式的可读性。
  • 若未安装mplcursors,可通过命令安装:pip install mplcursors

内容的提问来源于stack exchange,提问作者David777

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:43:15