R語言學(xué)習(xí)指南(9) 初探柱狀圖

這一節(jié)我們通過R中iris鳶尾花的數(shù)據(jù)來探索基礎(chǔ)柱狀圖

整理數(shù)據(jù)

library(tidyverse)
head(iris)
data <- iris %>% group_by(Species) %>%
  summarise(mean_Sepal.Length=mean(Sepal.Length),
            sd_Sepal.Length=sd(Sepal.Length))
  Species    mean_Sepal.Length sd_Sepal.Length
  <fct>                  <dbl>           <dbl>
1 setosa                  5.01           0.352
2 versicolor              5.94           0.516
3 virginica               6.59           0.636

geom_bar( )與geom_col( )的區(qū)別

ggplot(iris, aes(Species))+ geom_bar()

ggplot(iris,aes(Species,Sepal.Length))+ 
  geom_bar(stat="identity")

ggplot(iris,aes(Species,Sepal.Length))+ 
  geom_col()

我們可以看到geom_bar(stat = "identity")geom_col( )做完全一樣的事情彻坛;geom_bar( )geom_col( )區(qū)別關(guān)鍵在于它們在默認(rèn)情況下如何整合數(shù)據(jù),
geom_bar( )默認(rèn)是計算每個x值的行數(shù),如果為geom_bar( )明確指定stat = "identity"則是告訴ggplot2不自動整合數(shù)據(jù)卸勺,你會提供y值這就與geom_col( )的結(jié)果一致,所以當(dāng)含有y值時直接使用geom_col( )則更加方便
創(chuàng)建第一個條形圖

ggplot(data,aes(Species,mean_Sepal.Length))+
geom_col(aes(fill=Species),width=0.5)

一個普普通通的條行圖就此誕生了,下面讓我們一步一步來改造它

設(shè)置從0刻度開始

+ scale_y_continuous(limits = c(0, 9),expand = c(0, 0))+
theme_minimal()

添加刻度線及刻度條

+ theme(axis.line = element_line(color = "#3D4852"),
        axis.ticks = element_line(color = "#3D4852"))

移除垂直網(wǎng)格線

+ theme(panel.grid.major.y = element_line(color = "#DAE1E7"),
        panel.grid.major.x = element_blank())

添加X軸、Y軸温技、主標(biāo)題及腳注

+ labs(x = "Species",y = "mean_Sepal.Length",
       title = "The infamous Iris plot",caption = "2020-12-31") 

margin設(shè)置主標(biāo)題與圖之間的距離b==bottom

+ theme(plot.title = element_text(size = 20,face = "bold",
                                  margin = margin(b =30)))

設(shè)置圖邊距

+ theme(plot.margin = unit(c(1, 1,1,1), "cm"))
#分別表示上、右扭粱、下舵鳞、左 4方面的邊距

調(diào)整圖中的所有文本

+ theme(axis.text = element_text(size =13,color ="#22292F"),
        axis.title = element_text(size = 12, hjust = 1),
        axis.title.x = element_text(margin = margin(t = 12),size=12,
                                    color="red"),
        axis.title.y = element_text(margin = margin(r = 12)),
        axis.text.y = element_text(margin = margin(r = 5)),
        axis.text.x = element_text(margin = margin(t = 5)),
        plot.caption = element_text(size = 12,face = "italic",
                                    color = "#606F7B",
                                    margin = margin(t =12)))
調(diào)整柱子的順序
+ scale_x_discrete(limits=c("setosa","virginica","versicolor"))

更改填充顏色

+ scale_fill_brewer(palette="Blues")

圖例設(shè)置

+ theme(legend.position="top")
+ theme(legend.position="bottom")
# Remove legend
+ theme(legend.position="none")

經(jīng)過上面的分步演示可以看到我們能對圖中的任何細(xì)節(jié)進(jìn)行微調(diào),下面讓我們來看一個完整版

p <- ggplot(data, aes(Species, mean_Sepal.Length)) +
  geom_col(aes(fill=Species),width=0.5) +
  scale_y_continuous(limits = c(0, 9), expand = c(0, 0)) +
  theme_minimal() +
  labs(
    x = "Species", y = "mean_Sepal.Length",
    title = "The infamous Iris plot", caption = "2020-12-31"
  ) +
  theme(
    axis.line = element_line(color = "#3D4852"),
    axis.ticks = element_line(color = "#3D4852"),
    panel.grid.major.y = element_line(color = "#DAE1E7"),
    panel.grid.major.x = element_blank(),
    plot.title = element_text(
      size = 20, face = "bold",
      margin = margin(b = 30)
    ),
    plot.margin = unit(rep(1, 4), "cm"),
    axis.text = element_text(size = 13, color = "#22292F"),
    axis.title = element_text(size = 12, hjust = 1),
    axis.title.x = element_text(margin = margin(t = 12), size = 12,
    color = "red"),
    axis.title.y = element_text(margin = margin(r = 12)),
    axis.text.y = element_text(margin = margin(r = 5)),
    axis.text.x = element_text(margin = margin(t = 5)),
    plot.caption = element_text(
      size = 12, face = "italic",
      color = "#606F7B", margin = margin(t = 12)
    )
  )+
  scale_x_discrete(limits=c("setosa","virginica","versicolor"))+
  scale_fill_brewer(palette="Blues")+
  theme(legend.position="top")
p

添加誤差線

pp <- p + geom_errorbar(aes(ymin = mean_Sepal.Length - sd_Sepal.Length,
                    ymax = mean_Sepal.Length + sd_Sepal.Length),
                color = "#22292F",width = .1)
pp

繪制Y軸截斷柱狀圖

p1 <- pp + coord_cartesian(ylim = c(0,5.5))+
  ylab(NULL)+labs(title = NULL)+
  theme(legend.position="no")

p2 <- pp  + coord_cartesian(ylim = c(5.5, 8))+
  theme(axis.text.x = element_blank(), 
        axis.ticks.x = element_blank(), 
        axis.line.x = element_blank())+
  xlab(NULL)+ labs(caption=NULL)+
  theme(legend.position="right")

library(aplot)
p1 %>% insert_top(p2,height=.8)
參考:https://mp.weixin.qq.com/s/hXWEqOBPyhbzTVC6B_khsQ
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末琢蛤,一起剝皮案震驚了整個濱河市蜓堕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌博其,老刑警劉巖套才,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異慕淡,居然都是意外死亡背伴,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進(jìn)店門峰髓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挂据,“玉大人,你說我怎么就攤上這事儿普。” “怎么了掷倔?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵眉孩,是天一觀的道長。 經(jīng)常有香客問我勒葱,道長浪汪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任凛虽,我火速辦了婚禮死遭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘凯旋。我一直安慰自己呀潭,他們只是感情好钉迷,可當(dāng)我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著钠署,像睡著了一般糠聪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谐鼎,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天舰蟆,我揣著相機(jī)與錄音,去河邊找鬼狸棍。 笑死身害,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的草戈。 我是一名探鬼主播塌鸯,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼猾瘸!你這毒婦竟也來了界赔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤牵触,失蹤者是張志新(化名)和其女友劉穎淮悼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體揽思,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡袜腥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了钉汗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片羹令。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖损痰,靈堂內(nèi)的尸體忽然破棺而出福侈,到底是詐尸還是另有隱情,我是刑警寧澤卢未,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布肪凛,位于F島的核電站,受9級特大地震影響辽社,放射性物質(zhì)發(fā)生泄漏伟墙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一滴铅、第九天 我趴在偏房一處隱蔽的房頂上張望戳葵。 院中可真熱鬧,春花似錦汉匙、人聲如沸拱烁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽邻梆。三九已至守伸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間浦妄,已是汗流浹背尼摹。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留剂娄,地道東北人蠢涝。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像阅懦,于是被迫代替她去往敵國和親和二。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,507評論 2 359

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