在水平条形图上仅设置正xticks

时间:2017-02-22 13:43:40

标签: python matplotlib bar-chart axis-labels

我想在水平条形图上设置x轴上的正值,但我不知道该怎么做。

我的情节的一个小例子: enter image description here

我想在0的左边用500和1000替换-500和-1000。

这里我的代码,y和y2列出了值。

    y = [-i for i in y]
    plt.barh(range(1, len(y)+1), y, label="Serie_1")
    plt.barh(range(1, len(y2)+1), y2, alpha=0.5, color="r", label="Serie_2")
    plt.axvline(0, color="k")
    plt.yticks([i+1.5 for i in range(7)], range(7))
    plt.title("test")
    plt.legend()

我知道它有xticks,但是怎么样?

2 个答案:

答案 0 :(得分:0)

您可以在事后用自己的绝对值替换标签文本:

plt.gca().set_xticklabels([abs(x) for x in plt.gca().get_xticks()])

答案 1 :(得分:0)

更灵活的解决方案:使用plt.xticks。这是一个MWE。

import matplotlib.pylab as plt

fig, ax = plt.subplots()

x = range(-5, 5)
y = range(-5, 5)

plt.plot(x, y)
plt.xticks(x, [abs(i) for i in x])
plt.show()

产生,

enter image description here