%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()
由于 ax.get_yticks()
返回一个 numpy.ndarray
对象,因此可以直接在上面使用 abs
函数,从而得到更加简洁的解决方案:
ax.set_yticklabels(abs(ax.get_yticks()))
ax.set_yticks(range(-100, 200, 50))
ax.set_yticklabels([abs(y) for y in range(-100, 200, 50)])
fig.canvas.draw()
来绘制图形并填充刻度标签。 - GWW