dvgodoy / handyspark

HandySpark - bringing pandas-like capabilities to Spark dataframes
MIT License
187 stars 25 forks source link

Boxplot X label rotation #20

Open 5uperpalo opened 5 years ago

5uperpalo commented 5 years ago

Is there a way to rotate x labels in grouped/stratified boxplots? I tried 'rot' argument from pandas boxplot, I also tried to assign ax=axs so I can set the labels afterwards, but it's not working for stratified boxplot. (BTW thank you for this great tool!!!)

this works(no rotation): pattern_time_ranges.stratify(['event_type']).cols['event_time_range'].boxplot(figsize=(16, 5))

this does not work: fig, axs = plt.subplots(1, 1, figsize=(16, 5)) pattern_time_ranges.stratify(['event_type']).cols['event_time_range'].boxplot(ax=axs) Error : NotImplementedError: TransformNode instances can not be copied. Consider using frozen() instead.

this does not work too: pattern_time_ranges.stratify(['event_type']).cols['event_time_range'].boxplot(figsize=(16, 5), rot=90)

dvgodoy commented 5 years ago

Hi @5uperpalo ,

Thanks for reporting this issue. You've found a bug - using ax argument in a stratified plot is not working, neither it accepts rot argument. There is a workaround, though... you can build the plot as it is and modify it later, like this:

fig, axs = hdf.stratify(['Pclass']).cols['Age'].boxplot()
axs[0].set_xticklabels(axs[0].get_xticklabels(), rotation=90, horizontalalignment='right')

Hope this helps!