我正在使用matplotlib.pylot模块生成数千个图形,这些图形都处理一个称为“总垂直深度(TVD)”的值。这些值来自的数据都是负数,但行业标准是将它们显示为正(即距零的距离/绝对值)。我的y轴用于显示数字,并且当然使用实际值(负值)标记轴刻度。我不想更改这些值,但想知道如何访问文本元素,然后从每个值中删除负号(在图像上以红色圆圈显示)。
深入研究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()方法正在检索当前字符串,则我不理解它如何具有任何空值刻度配置。
答案 0 :(得分:4)
@SiHA指出,如果我们更改数据,则y轴上标签的顺序将颠倒。因此,我们可以使用ticker formatter来更改标签,而无需更改数据,如下例所示:
Could not find module 'Foo'
Perhaps you meant Bar (from bar-0.1.0.0)
Use -v to see a list of the files searched for.
这给了我以下图,请注意y轴标签的顺序。
答案 1 :(得分:2)