让我们看一下这段Python代码:
import matplotlib.pyplot as plt
x = [5,4,3,2,1,0]
x_strings = ['5','4','3','2','1','0']
y = [0,1,2,3,4,5]
plt.figure()
plt.subplot(311)
plt.plot(x, y, marker='o')
plt.subplot(312)
plt.plot(x_strings, y, marker='^', color='red')
plt.subplot(313)
plt.plot(x, y, marker='^', color='red')
plt.gca().invert_xaxis()
plt.show()
哪个生成以下三个子图:
在顶部子图中,x
值将自动递增排序,尽管它们在给定列表中的顺序有所不同。如果我想按照给定的x
顺序绘制y
与x
,则有两种可能性:
1)将x值转换为字符串并具有分类图-这是中间子图。
2)反转x轴-这是底部子图。
问题:是否有其他方法可以进行分类图绘制,但无需将数字转换为字符串,也无需反转x轴?
添加:
如果我使用set_xticklabels(list)
,则出于某种不清楚的原因,将跳过列表中的第一个元素(无论我引用的是x
还是x_strings
列表),并且由此产生的情节也完全奇怪:
import matplotlib.pyplot as plt
x = [5,4,3,2,1,0]
x_strings = ['5','4','3','2','1','0']
y = [0,1,2,3,4,5]
fig, ax = plt.subplots()
ax.set_xticklabels(x)
ax.plot(x, y, marker='^', color='red')
plt.show()
答案 0 :(得分:0)
两种尝试的解决方案似乎都是可能的。另外,您始终可以通过绘制整数并根据自己的喜好设置刻度标签来模仿分类图。
import matplotlib.pyplot as plt
x = [5,4,3,2,1,0]
y = [0,1,2,3,4,5]
fig, ax = plt.subplots()
ax.plot(range(len(y)), y, marker='^', color='red')
ax.set_xticks(range(len(y)))
ax.set_xticklabels(x)
plt.show()
答案 1 :(得分:0)