我有下一个DF:
A B C
1 2 'name 1'
2 3 'name 2'
3 5 'name 3'
Run Code Online (Sandbox Code Playgroud)
绘制列A和使用列C作为xticks 的正确顺序是什么?
df['A'].plot(xticks = 'C')
df['A'].plot(xticks = df['C'])
Run Code Online (Sandbox Code Playgroud)
两个都没有工作......例如,无论如何它都有效
df['A'].plot(xticks=[1,2,3])
Run Code Online (Sandbox Code Playgroud)
我应该真的转换为序列吗?我也对问题进行了修改.我收到了下一条错误消息:
ValueError: could not convert string to float: name 3
Run Code Online (Sandbox Code Playgroud)
我有一个字符串列,并希望我的情节使用它作为xticks.
PS
它不会与熊猫情节函数直接相关.我在这里找到了解决方案
Aln*_*lam 64
您提供的链接是一个很好的资源,但显示整个事情正在完成matplotlib.pyplot并用于.subplots()到达轴.虽然我之前已经这样做了,但我一直在寻找.plot()尽可能多地使用内置熊猫功能的方法.对我来说,它可以简化代码并更容易利用DataFrame的优点.
但是,似乎有很多事情本身并不容易在参数内部完成df.plot().幸运的是它返回了一个matplotlib.AxesSubplot,开辟了更大范围的可能性.
我将您的数据复制到DataFrame中:
df = pd.read_clipboard(quotechar="'")
Run Code Online (Sandbox Code Playgroud)
它看起来有点像:
A B C
0 1 2 'name 1'
1 2 3 'name 2'
2 3 5 'name 3'
Run Code Online (Sandbox Code Playgroud)
但是,当然,在非表格残缺的html中要好得多.(也许SO会解决这一天).
然后,我所要做的就是:
ax = df.A.plot(xticks=df.index, rot=90)
ax.set_xticklabels(df.C)
Run Code Online (Sandbox Code Playgroud)
如果您正在使用IPython/Jupyter,%matplotlib inline那么这两者都需要在同一个单元格中.我最初忘记了这一点,花了很多时间试图弄清楚出了什么问题.

您可以使用ax变量完成所有操作:
ax = df.A.plot()
ax.set_xticks(df.index)
ax.set_xticklabels(df.C, rotation=90)
Run Code Online (Sandbox Code Playgroud)
但是,正如我所提到的,我还没有找到一种方法来xticklabels进入df.plot()函数参数,这样就可以在一行中完成所有这些操作.
在这个例子中,旋转xtick标签的额外步骤可能是无关紧要的,但在我正在寻找这个答案的工作中派上用场.
当然,您可以更轻松地将A列和B列一起绘制:
ax = df.plot()
ax.set_xticks(df.index)
ax.set_xticklabels(df.C, rotation=90)
Run Code Online (Sandbox Code Playgroud)

ax.set_xticks与新参数一起使用labels以同时设置刻度和标签:
ax = df.plot(y='A')
ax.set_xticks(ticks=df.index, labels=df.C)
# ^^^^^^
Run Code Online (Sandbox Code Playgroud)
或者,由于df.plot返回一个Axes对象,我们可以链接它:
df.plot(y='A').set_xticks(df.index, df.C)
Run Code Online (Sandbox Code Playgroud)
请注意,plt.xticks始终有一个labels参数,因此此更改只是统一了Axes和pyplotAPI。