Matplotlib y轴刻度线的绝对值

4
在matplotlib中,我如何在yticks中使用绝对值?
例如,100、50、0、50、100、150。

Matplotlib

3个回答

4
使用get_yticks获取当前刻度,修改它,然后使用set_yticklabels。请参见下面的示例。
%matplotlib inline
import matplotlib.pyplot as plt
from math import trunc
a = np.random.rand(100)*30-20

plt.figure()

fig,ax = plt.subplots()

ax.bar(np.arange(len(a)), a)

ticks =  ax.get_yticks()

# set labels to absolute values and with integer representation
ax.set_yticklabels([int(abs(tick)) for tick in ticks])

plt.show()

enter image description here


谢谢!这甚至更好。 - Naffi
我该如何去掉数字中的零和小数点?比如说将10.0变成10? - Naffi
请注意,刻度线不总是在图形绘制之前填充。在某些情况下,您需要调用 fig.canvas.draw() 来绘制图形并填充刻度标签。 - GWW

2

由于 ax.get_yticks() 返回一个 numpy.ndarray 对象,因此可以直接在上面使用 abs 函数,从而得到更加简洁的解决方案:

ax.set_yticklabels(abs(ax.get_yticks()))

1
你可以手动替换y轴刻度标签。
例如:
ax.set_yticks(range(-100, 200, 50))
ax.set_yticklabels([abs(y) for y in range(-100, 200, 50)])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接