为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Helenr 2022-10-18 17:27:29
我试图让一个条形图将它的 X 标签旋转 45°,以使它们可读(因为存在重叠)。len(genero)7岁,len(filmes_por_genero)20岁我正在使用 MovieLens 数据集并制作一个图表,计算每种类型的电影数量。这是我现在的代码:import seaborn as snsimport matplotlib.pyplot as pltsns.set_style("whitegrid")filmes_por_genero = filmes["generos"].str.get_dummies('|').sum().sort_values(ascending=False)genero = filmes_com_media.indexchart = 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
查看完整描述

1 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

import pandas as pd

import matplotlib.pyplot as plt

import seaborn as sns

sns.set_style("whitegrid")


# data

df = pd.read_csv('ml-25m/movies.csv')


print(df.head())


   movieId                               title                                       genres

0        1                    Toy Story (1995)  Adventure|Animation|Children|Comedy|Fantasy

1        2                      Jumanji (1995)                   Adventure|Children|Fantasy

2        3             Grumpier Old Men (1995)                               Comedy|Romance

3        4            Waiting to Exhale (1995)                         Comedy|Drama|Romance

4        5  Father of the Bride Part II (1995)                                       Comedy


# clean genres

df['genres'] = df['genres'].str.split('|')

df = df.explode('genres').reset_index(drop=True)


print(df.head())


   movieId             title     genres

0        1  Toy Story (1995)  Adventure

1        1  Toy Story (1995)  Animation

2        1  Toy Story (1995)   Children

3        1  Toy Story (1995)     Comedy

4        1  Toy Story (1995)    Fantasy


流派很重要

gc = df.genres.value_counts().to_frame()


print(genre_count)


                    genres

Drama                25606

Comedy               16870

Thriller              8654

Romance               7719

Action                7348

Horror                5989

Documentary           5605

Crime                 5319

(no genres listed)    5062

Adventure             4145

Sci-Fi                3595

Children              2935

Animation             2929

Mystery               2925

Fantasy               2731

War                   1874

Western               1399

Musical               1054

Film-Noir              353

IMAX                   195

阴谋:sns.barplot

ax

fig, 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()

没有ax


plt.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()

//img1.sycdn.imooc.com//634e71b800015a8107350421.jpg

阴谋: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()

//img1.sycdn.imooc.com//634e71ca0001dd3907460439.jpg

查看完整回答
反对 回复 2022-10-18
  • 1 回答
  • 0 关注
  • 455 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号