本文分享自微信公衆號 - 大數據建模筆記(bigdatamodeling)微信
在使用R語言的ggplot2包做柱形圖時,有時須要設置排列和堆積的順序。下面以自帶的數據集diamonds做爲演示。大數據
library(ggplot2)spa
set.seed(1234).net
# 從數據集 diamonds中抽取1000個樣本3d
diam <- diamonds[sample(nrow(diamonds), 1000), ]blog
# 當不作任何設置時,此時的順序按照變量clarity和color的原始順序排列get
P <- ggplot(diam, aes(x = clarity, fill=color))it
P <- P + geom_bar(stat='count')table
P <- P + labs(x = 'Family Size') + theme_bw()class
print(P)
# 1、設置柱形圖的排列順序
# 一、將x軸轉化爲因子,並將因子順序設置爲想要排列的順序
P <- ggplot(diam,
aes(x = factor(clarity,levels=c('SI2', 'I1', 'SI1',
'VS2', 'VS1', 'VVS2', 'VVS1', 'IF')),
fill=color))
P <- P + geom_bar(stat='count')
P <- P + labs(x = 'Family Size') + theme_bw()
print(P)
# 二、將x軸的刻度設置成爲想要排列的順序,效果和上面是同樣的
P <- ggplot(diam, aes(x = clarity, fill=color))
P <- P + geom_bar(stat='count')
P <- P + scale_x_discrete(limits=c('SI2', 'I1', 'SI1', 'VS2',
'VS1', 'VVS2', 'VVS1', 'IF'))
P <- P + labs(x = 'Family Size') + theme_bw()
print(P)
# 三、按照高低順序排列
clardf <- data.frame(table(diam$clarity))
names(clardf) <- c('clarity', 'freq')
library(dplyr)
clardf <- arrange(clardf, desc(freq))
P <- ggplot(diam, aes(x = factor(clarity, levels=clardf$clarity),fill=color))
P <- P + geom_bar(stat='count')
P <- P + labs(x = 'Family Size') + theme_bw()
print(P)
# 2、設置填充順序
# 一、將填充變量轉化爲因子,並將因子順序設置爲想要填充的順序
P <- ggplot(diam, aes(x = clarity,
fill=factor(color, levels=c('J', 'I', 'H', 'G',
'F', 'D', 'E'))))
P <- P + geom_bar(stat='count')
P <- P + labs(x = 'Family Size') + labs(fill="color") + theme_bw()
print(P)
# 二、將填充的刻度設置成爲想要填充的順序 ,效果和上面同樣
P <- ggplot(diam, aes(x = clarity, fill=color))
P <- P + geom_bar(stat='count')
P <- P + scale_fill_discrete(limits=c('J', 'I', 'H', 'G', 'F', 'D', 'E'))
P <- P + labs(x = 'Family Size') + labs(fill="color") + theme_bw()
print(P)
本文分享自微信公衆號 - 大數據建模筆記(bigdatamodeling)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。