Python 旋转x-PLOTLIB

Python 旋转x-PLOTLIB,python,pandas,matplotlib,labels,Python,Pandas,Matplotlib,Labels,我似乎无法使x轴上的标签旋转90度 示例df: import pandas as pd import matplotlib.pyplot as plt d = ({ 'A' : ['1','1','2','2','3','3','3'], 'B' : ['A','B','C','C','D','B','C'], 'C' : ['Foo','Bar','Foo','Bar','Cat','Bar','Cat'], }) df =

我似乎无法使x轴上的标签旋转90度

示例df:

import pandas as pd
import matplotlib.pyplot as plt

d = ({
    'A' : ['1','1','2','2','3','3','3'],     
    'B' : ['A','B','C','C','D','B','C'],
    'C' : ['Foo','Bar','Foo','Bar','Cat','Bar','Cat'],            
    })

df = pd.DataFrame(data=d)

fig,ax = plt.subplots(figsize = (9,4))

df.assign(A=df.A.astype(int)).pivot_table(index="C", columns="B", values="A",aggfunc='count').rename_axis(None).rename_axis(None,1).plot(kind='bar')

plt.show()
我试过基本的:

plt.xticks(rotation = 90)
也尝试了此操作,但返回了一个属性错误:

df.assign(A=df.A.astype(int)).pivot_table(index="C", columns="B", values="A",aggfunc='count').rename_axis(None).rename_axis(None,1).plot(kind='bar', rotation = 90)
我已将标签旋转到以下位置:

xticklabels = df.C.unique()
ax.set_xticklabels(xticklabels, rotation = 0)

但它返回的顺序不正确。它只接受它们出现时的值。您可以通过创建子批次和配置标签设置来控制xticks标签,而不是确定适当的标签,如下所示:

import pandas as pd
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

d = ({
    'A' : ['1','1','2','2','3','3','3'],     
    'B' : ['A','B','C','C','D','B','C'],
    'C' : ['Foo','Bar','Foo','Bar','Cat','Bar','Cat'],            
    })
df = pd.DataFrame(data=d)

udf = (df.assign(A=df.A.astype(int))
 .pivot_table(index="C", columns="B", values="A",aggfunc='count')
 .rename_axis(None)
 .rename_axis(None,1))

udf.plot(kind='bar', ax=ax)

labels = ax.set_xticklabels(udf.index.values, rotation=0, fontsize=14)
产出将是:

还有一件事,我认为你需要0度旋转,因为默认值是90度


PS:pandas操作中的长链确实会破坏可读性。

您可以通过创建子批和配置标签设置来控制xticks标签,如下所示:

import pandas as pd
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

d = ({
    'A' : ['1','1','2','2','3','3','3'],     
    'B' : ['A','B','C','C','D','B','C'],
    'C' : ['Foo','Bar','Foo','Bar','Cat','Bar','Cat'],            
    })
df = pd.DataFrame(data=d)

udf = (df.assign(A=df.A.astype(int))
 .pivot_table(index="C", columns="B", values="A",aggfunc='count')
 .rename_axis(None)
 .rename_axis(None,1))

udf.plot(kind='bar', ax=ax)

labels = ax.set_xticklabels(udf.index.values, rotation=0, fontsize=14)
产出将是:

还有一件事,我认为你需要0度旋转,因为默认值是90度


PS:pandas操作中的长链确实会破坏可读性。

我运行下面的代码来生成角度为0的标签。我不明白为什么会生成两个绘图,所以我删除了行
fig,ax=plt.subplot()


我运行下面的代码生成角度为0的标签。我不明白为什么会生成两个绘图,所以我删除了行
fig,ax=plt.subplot()

您可能需要or或等效的
Axes
方法。您可能需要or或等效的
Axes
方法。