棒棒糖图有些类似我们传统的柱状图,由一根线条和一个圆形组成,比传统柱状图能表达更多信息。特别是在分类数目比较多的时候,如基因表达等,棒棒糖图更能很好的展示数据。今天我们使用R语言ggpubr包来绘制棒棒糖图,ggpubr包为ggplot的增强包,据说这是个为SCI而生的包,可以绘制出许多非常专业的SCI绘图,而已自带了很多期刊的配色方案,能做出编辑都称赞的图和配色,今后的我们将一一介绍。
今天,我们继续使用之前的肉类数据(关注公众号回复:肉类数据可以获得该数据),在既往文章中,我们已经对该数据进行了K均值聚类分析,我们以分析后的数据来绘制棒棒糖图。
先导入数据
library(ggpubr)
library(reshape)
bc<-read.csv("E:/r/test/roulei1.csv",sep=',',header=TRUE)
head(bc)
names(bc)
数据有5个参数,energy代表食物能量(卡路里),protein蛋白质,fat脂肪,calcium钙含量,iron铁含量,x1,是编号,x是是各种肉的名字,我就不一一解释,kmeans1.cluster是上次我们进行的一个肉类分类,我们把肉类分成了3类。
导入数据后,我们要对数据进行一下稍微的整理,先给部分列改个名字,kmeans1.cluster要转换成因子变量,不然后面没法弄。
bc<- rename(bc,c(X.1= "id",X="name",kmeans1.cluster="kind"))
bc$kind<-factor(bc$kind)
整理好数据后(如上图)就可以开始作图了,假如我们想知道肉类之间的能量关系,以name和energy来作图
先来一个最基础的
ggdotchart(bc, x = "name", y ="energy",
ggtheme = theme_bw())
然后可以进行分组表示,也有叫这个为克利夫兰点图,相对于棒棒糖图就是没有竖线,其中代码rotate = T为竖直方向,改为F就是水平方向
ggdotchart(bc, x = "name", y = "energy",
group = "kind", color = "kind",
palette =c('#999999','#E69F00','#56B4E9'),
rotate = T, #更改方向
sorting = "descending",
ggtheme = theme_bw(),
)
进一步添加竖条和修改图形,palette为修改颜色
ggdotchart(bc, x = "name", y = "energy",
color = "kind", # 按照kind填充颜色
palette = c("#00AFBB", "#E7B800", "#FC4E07"), # 修改颜色
sorting = "ascending", #升序排列
add = "segments", # 添加线条
ggtheme = theme_pubr(), # 主题名称
xlab="")
如果不想自己修改颜色,R包给自带多种期刊配色方案,palette =进行选择就可以了,注意选择了配色方案后,自行改颜色的代码就要去掉,不然会配色冲突
ggdotchart(bc, x = "name", y = "energy",
color = "kind", size = 3,
add = "segment",
add.params = list(color = "lightgray", size = 1.5), #修改线条参数
position = position_dodge(0.3), #调整位置
palette = "jco", #使用内部自带的调色板
ggtheme = theme_pubclean())
还可以给修改圆圈的大小和给竖线标上数字,这样更加清晰明了
ggdotchart(bc, x = "name", y = "energy",
color = "kind", size = 6,
palette = c("#00AFBB", "#E7B800", "#FC4E07"), # 修改颜色
add = "segment",
add.params = list(color = "lightgray", size = 1.5), #修改线条参数
position = position_dodge(0.3), #调整位置
label = round(bc$id), #添加数字
font.label = list(color = "white", size = 9,
vjust = 0.5), # 设置label参数
ggtheme = theme_pubclean())