close

背景介紹

今天有一位網友問,下面這張圖如何做?仔細一看,其實就是三張柱狀圖,將需要的數值映射到顏色上即可!

下來我們使用R語言來繪製一下!

軟件介紹

[軟件]:R (4.1.2)

[軟件]:RStudio (Version 1.4.1106)

繪圖教程

1.加載需要的R包,沒有安裝的使用install.packages( )安裝一下

library(tidyverse) #數據處理+繪圖library(openxlsx) #打開excel文件library(ggpubr) #組圖

2.這是我們的數據,三組

Province1Mt CO2/yGDP per capita (¥per person)Province2g CO2/¥GDPGDP per capita (¥per person)Province3t CO2/person/yGDP per capita (¥per person)Tianjin19190Henan11785Heilongjiang7.743Hebei12075Hebei4578Hebei1.682Shanxi10268Hubei8454Guangxi2.864Anhui4856Anhui2869Anhui0.822Ningxia4443Shannxi18953Zhejiang6.951

3.將數據放在R的文件夾下,然後讀取數據進入RStudio中,輸入代碼

data <- read.xlsx("D:\\R\\document\\Case.xlsx")

5.調用字體,提取數據,繪圖

windowsFonts用來進行提取系統字體,你可以將Times New Roman換成其他的也行

因為第一組數據是前三列,所以我們提取數據框的數據,並data[,(1:3)]賦值給data1

接下來就是繪圖,將第一列名稱作為x,第二列數值作為y,第三列數值進行顏色映射

由於變量中間有空格,因此使用兩個 `

coord_flip()函數是將x和y軸進行一個翻轉

labs()函數中,可以更改x和y坐標軸的名稱

geom_text(),是為了給柱子上添加標籤,並且對標籤的字體,大小,位置進行設置

scale_fill_gradient()函數是對映射的顏色進行設置,這裡使用綠色和紅色

scale_y_continuous()函數中,limits是為了對坐標軸的範圍進行限制,breaks是為了將坐標軸的標籤進行設置

theme是為了對圖形主題進行設置

# 調用字體windowsFonts(A=windowsFont("Times New Roman"))# 第一張圖的數據data1 <- data[,(1:3)]# 第一張圖繪圖f1 <- ggplot(data1,aes(`Province1`,`Mt CO2/y`, fill=`GDP per capita (¥per person)`))+ geom_col()+ coord_flip()+ labs(x="Province1",y="Mt CO2/y")+ geom_text(aes(label=`Mt CO2/y`),size=5,hjust=-.1,family="A")+ scale_fill_gradient(low = "green",high="red")+ scale_y_continuous(limits = c(0,250),breaks = seq(0,250,50))+ theme(text = element_text("A",size = 15,face = "bold"))

6.然後將第二張和第三張圖進行繪製

# 第二張圖的數據data2 <- data[,(4:6)]# 第二張圖繪圖f2 <- ggplot(data2,aes(`Province2`,`g CO2/¥GDP`, fill=`GDP per capita (¥per person)`))+ geom_col()+ coord_flip()+ labs(x="Province2",y="g CO2/¥GDP")+ geom_text(aes(label=`g CO2/¥GDP`),size=5,hjust=-.1,family="A")+ scale_fill_gradient(low = "green",high="red")+ scale_y_continuous(limits = c(0,250),breaks = seq(0,250,50))+ theme(text = element_text("A",size = 15,face = "bold"))# 第三張圖的數據data3 <- data[,(7:9)]# 第三張圖繪圖f3 <- ggplot(data3,aes(`Province3`,`t CO2/person/y`, fill=`GDP per capita (¥per person)`))+ geom_col()+ coord_flip()+ labs(x="Province2",y="t CO2/person/y")+ geom_text(aes(label=`t CO2/person/y`),size=5,hjust=-.1,family="A")+ scale_fill_gradient(low = "green",high="red")+ scale_y_continuous(limits = c(0,10),breaks = seq(0,10,2))+ theme(text = element_text("A",size = 15,face = "bold"))

7.最後,我們對三張圖進行組圖即可

labels是為了給圖加上標籤,不想要直接刪除代碼即可

font.label是為了對a,b,c的字體格式進行設置

ncol是將圖形按照三列排列

common.legend是為了將三個圖的圖例進行合併。(圖例相同的時候可以合併)

legend = "bottom"是為了將圖例的位置進行調整,你也可以放在其他位置,如("top", "bottom", "left", "right", "none")

ggarrange(f1,f2,f3, labels = c("a","b","c"), font.label = list(family="A",size=20), ncol=3, common.legend = TRUE, legend = "bottom")

8.趕緊來學習一下吧!(代碼雖多,但卻很好理解。雖然R語言繪圖很麻煩,但確實熟悉了之後很方便。而且,對於複雜圖形,更適合)。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()