python - Matplotlib 鼠标光标坐标未显示空刻度标签
问题描述
在matplotlib
中,交互式绘图窗口在左下角显示鼠标光标绘图坐标。
import matplotlib.pyplot as plt
plt.ion()
ax = plt.gca()
但是,假设我想隐藏(不一定删除)y 轴上的刻度标签,例如通过
ax.set_yticklabels([])
刻度标签已消失,但 y 轴不再显示鼠标光标绘图坐标。隐藏 y 轴的另一种方法是
ax.tick_params(labelleft=False)
这会保留鼠标光标坐标。空的刻度标签列表如何“破坏”坐标信息?我假设预期的行为是刻度标签不会改变底层绘图坐标,无论指定它们(imshow's extent
、x 数组plt.plot
等)。
解决方案
工具栏上的坐标格式化程序由当前的 Axes 格式化程序确定。默认情况下,在设置之前yticklabels
,这是一个ticker.ScalarFormatter
实例。当您运行ax.set_yticklabels([])
时,格式化程序被设置为一个ticker.FixedFormatter
实例,在这种情况下,它显然被定制为为任何输入值返回一个空字符串(这样您就不会得到任何刻度标签)。
ax.format_coord
您可以通过设置为您想要的坐标格式的函数来恢复工具栏的原始功能。例如:
ax.format_coord = lambda x, y: 'x={:g}, y={:g}'.format(x, y)
在一个最小的例子中:
import matplotlib.pyplot as plt
plt.ion()
fig, ax = plt.subplots()
ax.set_yticklabels([])
ax.format_coord = lambda x, y: 'x={:g}, y={:g}'.format(x, y)
推荐阅读
- java - SonarLint 警告:降低图像分块的认知复杂度(16 而非 15)
- sql - 如何在 case 语句的 when 条件中使用变量
- yaml - 使用光谱扩展规则
- sql - 我想通过从三个 SQL 表中获取数据来创建视图表。但问题是相同的列名未显示在表中
- python - 尝试导入熊猫时在 Python 中找不到模块错误
- angularjs - Gulp 包解决方案在 SPFX 中部署时不使用 Angular.json 文件
- javascript - 用点替换 coma - Google Sheet 找不到替换功能
- javascript - function.call() 返回全局 this
- django - Django bootstrap-pagination 使用继承的模板?
- c# - 在 C# 中检测 MySQL“超时过期”错误的正确方法是什么?