R中的柱形圖

注,有任何建議或疑問,請加 QQ: 1595218767 ,共同探討學(xué)習(xí)
如R/python代碼編程作圖等方面需要幫忙,歡迎來店咨詢 之恒科技, 揮動(dòng)熱情的小爪爪期待你哦

在日常作圖中,柱形圖就像白開水,沒有特異之處,卻處處責(zé)任擔(dān)當(dāng)
今天我們就嘗試通過R來展示各種柱形圖

數(shù)據(jù)準(zhǔn)備

> xs <- c(17.0,4.6,22,10.2,19.6)
> qw <- c(37.2,33,6,14.8,19.8)
> jk <- c(24.2,28,7,39.2,5.4)
> nf <- letters[1:5]
> (dt1 <- data.table::data.table(nf,xs,qw,jk))
   nf   xs   qw   jk
1:  a 17.0 37.2 24.2
2:  b  4.6 33.0 28.0
3:  c 22.0  6.0  7.0
4:  d 10.2 14.8 39.2
5:  e 19.6 19.8  5.4
> library(reshape2)
> (dt2 <- melt(dt1,id.vars=c('nf')))
   nf variable value
1   a       xs  17.0
2   b       xs   4.6
3   c       xs  22.0
4   d       xs  10.2
......

簇狀柱形圖1

> library(ggplot2)
> ggplot(dt2,aes(x=nf,y=value,fill=variable))+
  geom_bar(stat='identity',position='dodge',alpha=.5)+
  geom_text(aes(x=rep(1:5,3)+rep(c(-0.3,0,0.3),each=5),
                y=value+2,label=value),size=3,col='darkgray')+
  labs(title='Bar with Dodge',x='',y='')+
  theme(legend.position = 'top',
        legend.justification = 'right',
        legend.key.height = unit(0.1,'cm'),
        axis.ticks.x = element_blank(),
        axis.ticks.y = element_blank(),
        axis.text.y = element_blank(),
        panel.background = element_blank())+
  scale_fill_grey(start = 0,end=0.6)
bar_dg

簇狀柱形圖2

wuzhong1 <- rep(c('indx1','indx2'),3)
puxi1 <- rep(c('NRI','NTI','PD'),each=2)
value1 <- c(0.00021,0.00060,-0.00054,-0.00190,0.00041,0.00150)
df1 <- data.frame(wuzhong1,puxi1,value1)

library(ggplot2)
ggplot(df1,aes(puxi1,value1,fill=wuzhong1))+
  geom_bar(stat = 'identity',position = 'dodge')+
  labs(title='譜系多樣性指數(shù)',y='',x='')+
  geom_text(aes(x=seq(0.7,by=0.5,length.out = 6),
    y=ifelse(value1>0,value1+0.0003,value1-0.0003),
                label=value1),size=3,col='darkgray')+
  theme(legend.position = 'top',
        legend.justification = 'left',
        legend.key.height = unit(0.1,'cm'),
        panel.background = element_blank(),
        axis.ticks.y = element_blank(),
        axis.text.y = element_blank(),
        axis.ticks.x = element_blank())+
  scale_fill_manual(values = c('black','darkgray'))
bar_dg2

堆積柱形圖

library(data.table)
xs <- c(17.0,4.6,22,10.2,19.6)
qw <- c(37.2,33,6,14.8,19.8)
jk <- c(24.2,28,7,39.2,5.4)
nf <- letters[1:5]
(dt1 <- data.table(nf,xs,qw,jk))
(dt2 <- melt(dt1,id.vars=c('nf')))
dt2 <- dt2[order(nf,-variable)]
dt2[,dui_y:=cumsum(value)-value/2,by=.(nf)]
dt2

library(ggplot2)
ggplot(dt2,aes(x=nf,y=value,fill=variable))+ 
  geom_bar(stat='identity',position='stack',alpha=.5)+ 
  geom_text(aes(y=dui_y,label=value),size=3,col='white')+
  labs(title='Bar with Stack',x='',y='')+ 
  theme(legend.justification = 'right', 
        legend.position = 'top', 
        legend.key.height = unit(0.1,'cm'),
        panel.background = element_blank(),
        axis.ticks = element_blank(),
        axis.text.y = element_blank())+ 
  scale_fill_grey(start = 0.6,end=0) 
bar_st

百分比堆積柱形圖

dt2[,per1:=cumsum(value/sum(value))-(value/sum(value))/2,by=nf]
ggplot(dt2,aes(x=nf,y=value,fill=variable))+
  geom_bar(stat='identity',position='fill',alpha=.5)+
  geom_text(aes(y=per1,label=variable),col='white',size=3)+
  labs(title='Bar with Fill',x='',y='')+
  theme(legend.position = 'none',
        panel.background = element_blank(),
        axis.ticks = element_blank(),
        axis.text.y = element_blank())+
  scale_fill_grey(start=0.6,end=0)
bar_fil

分面柱形圖 - 縱向

> ggplot(dt2,aes(x=nf,y=value,fill=nf))+
  geom_bar(stat='identity',position='stack',alpha=.5)+
  geom_text(aes(x=nf,y=value/2,label=value),col='white',size=3)+
  labs(title='Bar with Stack in facets',x='',y='')+
  theme(panel.background = element_blank(),
        legend.position = 'none',
        axis.text.y = element_blank(),
        axis.ticks.y = element_blank())+
  scale_fill_grey(start=0.6,end=0)+
  facet_grid(variable~.)
bar_fct

分面柱形圖 - 橫向

事實(shí)上,人眼球的左右移動(dòng)能力優(yōu)于上下移動(dòng)能力,導(dǎo)致人類視覺的橫向閱讀速度和接受能力優(yōu)于縱向,so 我們來做個(gè)橫向展示

ggplot(dt2,aes(x=nf,y=value,fill=nf))+
  geom_bar(stat='identity',position='stack',alpha=.5)+
  labs(title='Bar with Stack in facets',x='',y='')+
  geom_text(aes(x=nf,y=value*0.5,label=value),size=3,col='white')+
  theme(legend.position = 'none',
        #legend.justification = 'left',
        legend.key.height = unit(0.1,'cm'),
        axis.ticks.x = element_blank(),
        axis.ticks.y = element_blank(),
        axis.text.x = element_blank(),
        panel.background = element_blank()
        )+
  scale_fill_grey(start = 0,end=0.5)+
  facet_grid(.~variable)+
  coord_flip()
bar_fct3.png

簡單柱形圖的橫縱向比較

library(vcd)
(df1 <- data.frame(table(Arthritis$Improved)))
    Var1 Freq
1   None   42
2   Some   14
3 Marked   28
ggplot(df1,aes(x=reorder(Var1,Freq),y=Freq,fill=reorder(Var1,Freq)))+
     geom_bar(stat = 'identity')+
     geom_text(aes(y=Freq+2,label=Freq),
                             col='black',size=4)+
     labs(title='Barplot1',x='',y='')+
     theme(panel.background = element_blank(),
           legend.position = 'none',
           axis.ticks.y = element_blank(),
           axis.text.y = element_blank())+
  scale_fill_grey(start=0.6,end=0)
sim_bar1
ggplot(df1,aes(x=reorder(Var1,Freq),y=Freq))+
  geom_bar(stat = 'identity')+
  geom_text(aes(y=Freq*3/4,label=Freq),
            col='white',size=4)+
  labs(title='Vertical Barplot',x='',y='')+
  theme(panel.background = element_blank(),
        legend.position = 'none',
        axis.ticks.x = element_blank(),
        axis.text.x = element_blank())+
  coord_flip()
sim_bar2

簡單柱形圖的 x坐標(biāo)軸標(biāo)簽順序修改

value1 <- c(-0.6034,-2.5413,0.2555)
id1 <- c('<=-0.1042','<=-0.9138','>-0.1042')
df1 <- data.frame(id1,value1)
        id1  value1
1 <=-0.1042 -0.6034
2 <=-0.9138 -2.5413
3  >-0.1042  0.2555

ggplot(df1)+
  geom_bar(aes(id1,value1,fill=id1),stat = 'identity')+
  geom_text(aes(id1,ifelse(value1>0,value1+0.1,value1-0.1),
                label=value1),size=3,col='#595959')+
  geom_hline(yintercept = 0,col='#595959')+
  labs(title='跨省',x='',y='')+
  scale_fill_grey(start = 0.6,end=0)+
  theme(panel.background = element_blank(),
        legend.position = 'none',
        axis.ticks.y = element_blank(),
        axis.ticks.x = element_blank(),
        axis.text.y = element_blank())
scl_limit1.png
ggplot(df1)+
  geom_bar(aes(id1,value1,fill=id1),stat = 'identity')+
  geom_text(aes(id1,value1/2,
                label=value1),size=3,col='#595959')+
  geom_hline(yintercept = 0,col='#595959')+
  labs(title='跨省',x='',y='')+
  scale_x_discrete(limits=c('<=-0.9138','<=-0.1042','>-0.1042'))+
  scale_fill_grey(start = 0.6,end=0)+
  theme(panel.background = element_blank(),
        legend.position = 'none',
        axis.ticks.y = element_blank(),
        axis.ticks.x = element_blank(),
        axis.text.y = element_blank())
scl_limit2.png

x,y軸標(biāo)簽值修改

value1 <- c(-0.6034,-2.5413,0.2555)
id2 <- factor(c(1,2,3))
df1 <- data.frame(value1,id2)
str(df1)
'data.frame':   3 obs. of  2 variables:
 $ value1: num  -0.603 -2.541 0.256
 $ id2   : Factor w/ 3 levels "1","2","3": 1 2 3

library(ggplot2)
ggplot(df1)+
  geom_bar(aes(id2,value1),stat = 'identity')
labl1.png
ggplot(df1)+
  geom_bar(aes(id2,value1,fill=id2),stat = 'identity')+
  geom_text(aes(id2,value1/2,
                label=value1),size=3,col='white')+
  geom_hline(yintercept = 0,col='#595959')+
  labs(title='跨省',x='',y='')+
  scale_x_discrete(limits = c(2,1,3),
                   labels=c('<=-0.1042','<=-0.9138','>-0.1042'))+
  scale_fill_grey(start = 0.6,end=0)+
  theme(panel.background = element_blank(),
        legend.position = 'none',
        axis.ticks.y = element_blank(),
        axis.ticks.x = element_blank(),
        axis.text.y = element_blank())
labl2.png

Reference:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,563評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,694評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,672評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,965評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,690評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,019評論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,013評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,188評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,718評論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,438評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,667評論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,149評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,845評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,252評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,590評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,384評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內(nèi)容