I have a dataframe I am attempting to plot. I would like the data points to appear in sorted order along the x-axis in my plot. I have tried sorting the dataframe prior to passing it to ggplot, however my order gets disregarded. My data is as follows, I want to sort on the 'value' attribute.
var1 var2 value direction
0 PM25 PBAR 0.012001 1
1 PM25 DELTA_T 0.091262 1
2 PM25 RH 0.105857 1
3 PM25 WDV 0.119452 0
4 PM25 T10M 0.119506 0
5 PM25 T2M 0.129869 0
6 PM25 SRAD 0.134718 0
7 PM25 WSA 0.169000 0
8 PM25 WSM 0.174202 0
9 PM25 WSV 0.181596 0
10 PM25 SGT 0.263590 1
This is what my code looks like currently:
tix = np.linspace(0,.3,10)
corr = corr.sort_values(by='value').reset_index(drop = True)
p = ggplot(data = corr, mapping = aes(x='var2', y='value')) +\
geom_point(mapping = aes(fill = 'direction')) + ylab('Correlation') + ggtitle('Correlation to PM25') +\
theme_classic() + scale_y_continuous(breaks = tix, limits = [0, .3])
print(p)
This produces the following plot:
ggplot2
will treat any textual element along the x-axis as a factor variable and will set the levels in alphabetical order. To get the behavior you want, you need to make yourVariable
value to be a factor in the order provided. And then try to recreate the plot. – Mixon