无法反转matplotlib子图中的xticks

时间:2019-01-02 11:26:51

标签: python matplotlib

我使用matplotlib设计了一个子图。我正在尝试扭转剧情的xticks。请参阅示例代码-

import numpy as np
import matplotlib.pyplot as plt

# generate the data
n = 6
y = np.random.randint(low=0, high=10, size=n)
x = np.arange(n)

# generate the ticks and reverse it
xticks = range(n)
xticks.reverse()

# plot the data
plt.figure()
ax = plt.subplot(111)
ax.bar(x, y)
print xticks # prints [5, 4, 3, 2, 1, 0]
ax.set_xticks(xticks)
plt.show()

请在下方查看生成的图- enter image description here

请注意xticks。即使使用了ax.set_xticks(xticks),但xticks并没有改变。我是否错过了一些重新绘制情节的函数调用?

下面是系统信息-

matplotlib.__version__
'2.1.1'

matplotlib.__version__numpy__
'1.7.1'

python --version
Python 2.7.15rc1

请注意,我只想反转刻度线,而不想反转轴。

3 个答案:

答案 0 :(得分:2)

使用Caused by: cucumber.runtime.DuplicateStepDefinitionException: Duplicate step definitions in FicheSteps.java:27 and FicheSteps.java:27 ,您当前正在指定刻度位置,该位置与列表的顺序不变。您通过ax.set_xticks或通过[0, 1, 2, 3, 4, 5]。差异不会在刻度线中注意到。相反,您想要的是颠倒的滴答标签,您应该为此[5, 4, 3, 2, 1, 0]。有两种方法可以做到:

方法1

使用set_xticklabels(xticks[::-1]),其中第一个参数指定刻度线的位置,第二个参数指定相应的刻度线标签。具体来说,plt.xticks将提供刻度位置,xticks将使用反向的刻度标签标记您的绘图。

xticks[::-1]

方法2 在需要xticks = range(n) # plot the data plt.figure() ax = plt.subplot(111) ax.bar(x, y) plt.xticks(xticks, xticks[::-1]) 的地方使用ax来获得想要的东西

set_xticklabels

enter image description here

答案 1 :(得分:1)

使用:

$id = $request->route('user')

out

答案 2 :(得分:-1)

您还可以反转轴ax.set_xlim([5.5, -0.5])的顺序

import numpy as np
import matplotlib.pyplot as plt

n = 6
x = np.arange(n)
y = (x+1) **(1/2)

fig, axs = plt.subplots(1, 3, constrained_layout=True)
axs[0].bar(x, y)
axs[0].set_title('Original data')

axs[1].bar(x[::-1], y)
axs[1].set_xlim(5.5, -0.5)
axs[1].set_title('x index reversed\nand axis reversed')

axs[2].bar(x, y)
axs[2].set_xlim(5.5, -0.5)
axs[2].set_title('just axis reversed')

plt.show()

enter image description here