我试图得到一个条形图旋转它的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
2条答案
按热度按时间xnifntxz1#
类型计数
sns.barplot
(第一个字母)第一次
sns.countplot
(一个数字)sns.countplot
来略过使用.value_counts()
。countplot
进行排序,必须使用order=df.genres.value_counts().index
,因此,如果需要降序排序,countplot
并不能真正保存您对.value_counts()
的需求。mwkjh3gx2#
标签旋转的短代码:
完整示例
sns.countplot
,x轴已排序