Python 在水平条形图上仅设置正XTICK

Python 在水平条形图上仅设置正XTICK,python,matplotlib,bar-chart,axis-labels,Python,Matplotlib,Bar Chart,Axis Labels,我想在水平条形图的x轴上设置正值,但我不知道怎么做 我的情节的一个小例子: 我想用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.axvli

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

我的情节的一个小例子:

我想用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()

我知道这是XTick的问题,但如何解决呢?

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

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

您可以用绝对值替换事实之后的标签文本:

plt.gca().set_xticklabels([abs(x) for x in plt.gca().get_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()
产生,


更灵活的解决方案:使用。这是一个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()
产生,


哦,谢谢,它很管用!为了一件小事排了这么长的队。请注意,它返回浮点值,我只是用一个“int()”来删除小数。哦,谢谢,它能工作!为了一件小事排了这么长的队。请注意,它返回浮点值,我只是放了一个“int()”来删除小数。