How To Rotate Seaborn Barplot X-axis Tick Labels
I'm trying to get a barplot to rotate it's X Labels in 45° to make them readable (as is, there's overlap). len(genero) is 7, and len(filmes_por_genero) is 20 I'm using a MovieLens
Solution 1:
- Data from MovieLens 25M Dataset at MovieLens
import pandas as pd
import mathplotlib.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
01 Toy Story (1995) Adventure|Animation|Children|Comedy|Fantasy
12 Jumanji (1995) Adventure|Children|Fantasy
23 Grumpier Old Men (1995) Comedy|Romance
34 Waiting to Exhale (1995) Comedy|Drama|Romance
45 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
01 Toy Story (1995) Adventure
11 Toy Story (1995) Animation
21 Toy Story (1995) Children
31 Toy Story (1995) Comedy
41 Toy Story (1995) Fantasy
Genres Counts
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
Plot: sns.barplot
With 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()
Without 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()
Plot: sns.countplot
- Use
sns.countplot
to skip using.value_counts()
if the plot order doesn't matter. - To order the
countplot
,order=df.genres.value_counts().index
must be used, socountplot
doesn't really save you from needing.value_counts()
, if a descending order is desired.
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()
Post a Comment for "How To Rotate Seaborn Barplot X-axis Tick Labels"