Python ggplot rotate axis labels

2019-04-19 14:12发布

问题:

when I tried to plot a timeseries with ggplot, the x axis lables became too crowded and overlapped each other:

The code is:

plot = ggplot(df, aes(x=df.index, weight='COUNT')) + \
    geom_bar() + \
    xlab('Date') + \
    ylab('Incidents') 

I tried to add the following line

+ theme(axis.text.x = element_text(angle = 90, hjust = 1))

to the plot, but it doesn't work. And this extra line gives me error:

SyntaxError: keyword can't be an expression
close failed in file object destructor:
sys.excepthook is missing
lost sys.stderr

Any idea how this happened and how should I fix it? Thanks!!

回答1:

(Old question, posting the answer if anyone comes across this in the future)

"axis.text.x" format is used for R. When using ggplot for python, replace "axis.text.x" with "axis_text_x"

This worked for me:

theme(axis_text_x  = element_text(angle = 90, hjust = 1))

Reference: https://github.com/yhat/ggplot/blob/master/ggplot/themes/theme.py