我使用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()
请注意xticks
。即使使用了ax.set_xticks(xticks)
,但xticks
并没有改变。我是否错过了一些重新绘制情节的函数调用?
下面是系统信息-
matplotlib.__version__
'2.1.1'
matplotlib.__version__numpy__
'1.7.1'
python --version
Python 2.7.15rc1
请注意,我只想反转刻度线,而不想反转轴。
答案 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
答案 1 :(得分:1)
答案 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()