如何旋转seaborn barplot x轴刻度标签

我试图让一个条形图将它的 X 标签旋转 45°,以使它们可读(因为存在重叠)。


len(genero)7岁,len(filmes_por_genero)20岁


我正在使用 MovieLens 数据集并制作一个图表,计算每种类型的电影数量。这是我现在的代码:


import seaborn as sns

import matplotlib.pyplot as plt

sns.set_style("whitegrid")


filmes_por_genero = filmes["generos"].str.get_dummies('|').sum().sort_values(ascending=False)

genero = filmes_com_media.index


chart = plt.figure(figsize=(16,8))

sns.barplot(x=genero,

            y=filmes_por_genero.values,

            palette=sns.color_palette("BuGn_r", n_colors=len(filmes_por_genero) + 4)

            )


chart.set_xticklabels(

    chart.get_xticklabels(), 

    rotation=45, 

    horizontalalignment='right'

)

这是完整的错误:


/usr/local/lib/python3.6/dist-packages/pandas/core/groupby/grouper.py in get_grouper(obj, key, axis, level, sort, observed, mutated, validate)

    623                 in_axis=in_axis,

    624             )

--> 625             if not isinstance(gpr, Grouping)

    626             else gpr

    627         )


/usr/local/lib/python3.6/dist-packages/pandas/core/groupby/grouper.py in __init__(self, index, grouper, obj, name, level, sort, observed, in_axis)

    254         self.name = name

    255         self.level = level

--> 256         self.grouper = _convert_grouper(index, grouper)

    257         self.all_grouper = None

    258         self.index = index


/usr/local/lib/python3.6/dist-packages/pandas/core/groupby/grouper.py in _convert_grouper(axis, grouper)

    653     elif isinstance(grouper, (list, Series, Index, np.ndarray)):

    654         if len(grouper) != len(axis):

--> 655             raise ValueError("Grouper and axis must be same length")

    656         return grouper

    657     else:


ValueError: Grouper and axis must be same length


Helenr
浏览 455回答 1
1回答

慕盖茨4494581

来自MovieLens的MovieLens 25M 数据集的数据import pandas as pdimport matplotlib.pyplot as pltimport seaborn as snssns.set_style("whitegrid")# datadf = pd.read_csv('ml-25m/movies.csv')print(df.head())   movieId                               title                                       genres0        1                    Toy Story (1995)  Adventure|Animation|Children|Comedy|Fantasy1        2                      Jumanji (1995)                   Adventure|Children|Fantasy2        3             Grumpier Old Men (1995)                               Comedy|Romance3        4            Waiting to Exhale (1995)                         Comedy|Drama|Romance4        5  Father of the Bride Part II (1995)                                       Comedy# clean genresdf['genres'] = df['genres'].str.split('|')df = df.explode('genres').reset_index(drop=True)print(df.head())   movieId             title     genres0        1  Toy Story (1995)  Adventure1        1  Toy Story (1995)  Animation2        1  Toy Story (1995)   Children3        1  Toy Story (1995)     Comedy4        1  Toy Story (1995)    Fantasy流派很重要gc = df.genres.value_counts().to_frame()print(genre_count)                    genresDrama                25606Comedy               16870Thriller              8654Romance               7719Action                7348Horror                5989Documentary           5605Crime                 5319(no genres listed)    5062Adventure             4145Sci-Fi                3595Children              2935Animation             2929Mystery               2925Fantasy               2731War                   1874Western               1399Musical               1054Film-Noir              353IMAX                   195阴谋:sns.barplot和axfig, ax = plt.subplots(figsize=(12, 6))sns.barplot(x=gc.index, y=gc.genres, palette=sns.color_palette("BuGn_r", n_colors=len(genre_count) + 4), ax=ax)ax.set_xticklabels(ax.get_xticklabels(), rotation=45, horizontalalignment='right')plt.show()没有axplt.figure(figsize=(12, 6))chart = sns.barplot(x=gc.index, y=gc.genres, palette=sns.color_palette("BuGn_r", n_colors=len(genre_count)))chart.set_xticklabels(chart.get_xticklabels(), rotation=45, horizontalalignment='right')plt.show()阴谋:sns.countplot如果情节顺序无关紧要,请使用sns.countplot跳过使用。.value_counts()要订购countplot,order=df.genres.value_counts().index必须使用,所以如果需要降序,countplot并不能真正使您免于需要 。.value_counts()fig, ax = plt.subplots(figsize=(12, 6))sns.countplot(data=df, x='genres', ax=ax)ax.set_xticklabels(ax.get_xticklabels(), rotation=45, horizontalalignment='right')plt.show()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python