美文网首页
簇状柱状图及分面图的绘制

簇状柱状图及分面图的绘制

作者: 鼓吉石 | 来源:发表于2022-03-18 16:13 被阅读0次

详情参考《R语言数据可视化之美》p96,p222

效果图:

tu1.png

数据:

表1处理前.png

数据预处理:

发现数据横轴为元素,纵轴为浓度,MR和TEMP为两个分组,所以要处理为这样:


表1处理后.png

以元素为主,给每个元素标好对应的分类便于后续处理

处理数据:

#加载包
> library(ggplot2)
> library(openxlsx)
> library(reshape2)
#读取数据
> read.xlsx("c:/Users/RNG/Desktop/2.xlsx")
> df <- read.xlsx("c:/Users/RNG/Desktop/2.xlsx")
Element concentration(mg/L) TEMP(℃)         MR
1       Cr             0.14000       850 0.06250000
2       Cr             0.14000      1050 0.07638889
3       Cr             0.20000       850 0.07638889
4       Cr             0.21000       950 0.07638889
5       Cr             0.24000      1050 0.06250000
6       Cr             0.32000       950 0.06250000
7       Cd             0.00041       850 0.06250000
8       Cd             0.00060       850 0.07638889
9       Cd             0.00060       950 0.07638889
10      Cd             0.00064       950 0.06250000
11      Cd             0.05100      1050 0.07638889
12      Cd             0.06800      1050 0.06250000
13      Pb             0.00010       850 0.07638889
14      Pb             0.00010       950 0.07638889
15      Pb             0.00070       950 0.06250000
16      Pb             0.00600      1050 0.06250000
17      Pb             0.01600       850 0.06250000
18      Pb             0.00070       950 0.07638889
19      Zn             0.00180       850 0.07638889
20      Zn             0.00440       950 0.06250000
21      Zn             0.00690      1050 0.07638889
22      Zn             0.00850       850 0.06250000
23      Zn             0.27000      1050 0.07638889
24      Zn             0.38000      1050 0.06250000
25      Cu             0.00010       950 0.07638889
26      Cu             0.00100       950 0.06250000
27      Cu             0.00110       850 0.07638889
28      Cu             0.00170       850 0.06250000
29      Cu             0.04000      1050 0.06250000
30      Cu             0.04600      1050 0.07638889
#发现原本表中的1:30和1:50变成了数字,所以第一步需要把MR列复原:
> df$MR[which(df$MR == 0.0625)] <- "1:30"#使用该函数将MR列中所有的相同项0.0625替换为1:30
> df$MR[which(df$MR == 0.0763888888888889)] <- "1:50"
#将分组列变为因子
> df$Element <- as.factor(df$Element)
> df$`TEMP(℃)` <- as.factor(df$`TEMP(℃)`)
> df$MR <- as.factor(df$MR)

画图

> ggplot(df,aes(x=Element,y=`concentration(mg/L)`,fill=`TEMP(℃)`))#ggplot函数,fill=填充颜色,选择为分组
+geom_bar(stat = "identity",position = position_dodge())#使用geom—bar函数绘制簇状图stat参数为"identity",position = position_dodge()用来调节每个单元的柱子之间的间隔,不加参数为无间隔
+facet_grid(cols = vars(df$MR))#该函数绘制分面图,cols表示按横着分,vars(MR)表示按MR的分组分
+theme(panel.background = element_rect(fill='white',colour = 'black'),axis.title.x=element_text(colour = 'black',size=20),axis.title.y = element_text(colour = 'black',size=20),legend.text = element_text(size = 15))#设置主题,具体参考POca绘制

相关文章

网友评论

      本文标题:簇状柱状图及分面图的绘制

      本文链接:https://www.haomeiwen.com/subject/njoidrtx.html