gpt4 book ai didi

python-2.7 - 如何从 matplotlib.pyplot 图中的 y 刻度标签中删除负号?

转载 作者:行者123 更新时间:2023-12-04 22:25:28 28 4
gpt4 key购买 nike

我正在使用 matplotlib.pylot 模块生成数千个数字,这些数字都处理一个名为“总垂直深度(TVD)”的值。这些值来自的数据都是负数,但行业标准是将它们显示为正数(即距零/绝对值的距离)。我的 y 轴用于显示数字,当然使用实际值(负)来标记轴刻度。我不想更改值,但想知道如何访问文本元素并从每个值中删除负号(在图像上以红色圆圈显示)。

enter image description here

深入研究 matplotlib 文档后,代码的几次迭代让我得到了以下代码,但我仍然遇到错误。

locs, labels = plt.yticks()

newLabels = []

for lbl in labels:
newLabels.append((lbl[0], lbl[1], str(float(str(lbl[2])) * -1)))

plt.yticks(locs, newLabels)

“标签”列表中的某些字符串似乎是空的,因此强制转换无法正常工作,但我不明白如果 yticks() 方法正在检索当前刻度配置,它是如何具有任何空值的。

最佳答案

@SiHA 指出,如果我们更改数据,则 y 轴上的标签顺序将反转。所以我们可以使用 ticker formatter只需更改标签而不更改数据,如下例所示:

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import numpy as np

@ticker.FuncFormatter
def major_formatter(x, pos):
label = str(-x) if x < 0 else str(x)
return label

y = np.linspace(-3000,-1000,2001)
fig, ax = plt.subplots()
ax.plot(y)
ax.yaxis.set_major_formatter(major_formatter)
plt.show()

这给了我下面的图,注意 y 轴标签的顺序。

Reversed y-axis order

关于python-2.7 - 如何从 matplotlib.pyplot 图中的 y 刻度标签中删除负号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51086732/

28 4 0