library(ggplot2)
library(ggpubr)
1.简单条形图
df <- data.frame(dose=c("D0.5", "D1", "D2"),
len=c(4.2, 10, 29.5))
ggbarplot(df,x = 'dose',y = 'len',
color = 'black',
fill = 'gray')
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d624edb65e72fb24db8d257724030d4a.png)
ggbarplot(df,x = 'dose',y = 'len',
color = 'black',
fill = 'gray',
rotate = T)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/83f210ddc07d968396ba4bd6fcce9bff.png)
ggbarplot(df,x = 'dose',y = 'len',
color = 'black',
fill = 'gray',
label = T)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8238a9c79ba8d783fd34d29862452733.png)
ggbarplot(df, x = "dose", y = "len",
color = "dose",
fill = "dose",
palette = "jco")
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5d41789d132f234980cffb9eeb9e270a.png)
2.簇状条形图
df2 <- data.frame(supp=rep(c("VC", "OJ"), each=3),
dose=rep(c("D0.5", "D1", "D2"),2),
len=c(6.8, 15, 33, 4.2, 10, 29.5))
ggbarplot(df2, x = "dose", y = "len",
fill = "supp",
color = "supp",
palette = c("gray", "black"),
position = position_dodge(0.9))
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b7c4a4b82b1d5c36d7203e6535c74a97.png)
- 改变条形图轮廓和填充色,按填充色生成图例,添加标签
ggbarplot(df2, x = "dose", y = "len",
color = "supp", # 分组调整轮廓颜色
fill = "supp", # 分组调整填充颜色
palette = 'jco', # jco杂志配色
position = position_dodge(0.9), # 调整条形间距
label = TRUE, # 添加标签
lab.col = "black",lab.pos = "out") # 修改标签参数,颜色、位置
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4a16a6bf6c5df782c2e0ce2019fab35d.png)
3.堆积条形图
ggbarplot(df2, x = "dose", y = "len",
color = "supp", # 分组调整轮廓颜色
fill = "supp", # 分组调整填充颜色
palette = 'jco', # jco杂志配色
label = TRUE, # 添加标签
lab.col = "white",lab.pos = "in") # 修改标签参数,颜色、位置
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/439a522ed9062187b6190758ab8a3560.png)
library(gcookbook)
library(plyr)
df3 = ddply(df2,'dose', # 按照'dose'变量分组
transform, #将每组条形对应的数据转化为100%格式
percent = round(len/sum(len) * 100)) # 转换公式,将转换后的数据添加到新的1列
ggbarplot(df3, x = "dose", y = "percent",
color = "supp", # 分组调整轮廓颜色
fill = "supp", # 分组调整填充颜色
palette = 'jco', # jco杂志配色
label = TRUE, # 添加标签
lab.col = "white",lab.pos = "in") # 修改标签参数,颜色、位置
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1fa0fb4d54827a6a7ba583e1af3b4afb.png)
4.有序条形图
dfm = mtcars
dfm$cyl = as.factor(dfm$cyl)
dfm$name = rownames(dfm)
ggbarplot(dfm, x = "name", y = "mpg",
fill = "cyl", # 分组调整填充颜色
color = "white", # 轮廓颜色为白色
palette = "jco", # jco杂志配色
sort.val = "asc", # 按降序对值进行排序
sort.by.groups = F, # 不在组内进行排序
x.text.angle = 90 , # 旋转垂直x轴文本
)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1cb8669c1823f9a9b409a3561d5108ca.png)
ggbarplot(dfm, x = "name", y = "mpg",
fill = "cyl", # 分组调整填充颜色
color = "white", # 轮廓颜色为白色
palette = "jco", # jco杂志配色
sort.val = "asc", # 按升序对值进行排序
sort.by.groups = T, # 组内进行排序
x.text.angle = 90 # 旋转垂直x轴文本
)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fdb32f41dfc5547894fffb3f3906fc30.png)
dfm$mpg_z <- scale(dfm$mpg)
dfm$mpg_grp <- factor(ifelse(dfm$mpg_z < 0, "low", "high"),
levels = c("low", "high"))
ggbarplot(dfm, x = "name", y = "mpg_z",
fill = "mpg_grp", # 分组调整填充颜色
color = "white", # 轮廓颜色为白色
palette = "jco", # jco杂志配色
sort.val = "asc", # 按升序对值进行排序
sort.by.groups = F, # 组内不排序
x.text.angle = 90, # 旋转垂直x轴文本
ylab = "MPG z-score", # y轴标签
xlab = F, # 去除x轴标签
legend.title = "MPG Group" # 添加图例标签
)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2c0fe75aaa4220a07e8fd04601ddda73.png)
ggbarplot(dfm, x = "name", y = "mpg_z",
fill = "mpg_grp", # 分组调整填充颜色
color = "white", # 轮廓颜色为白色
palette = "jco", # jco杂志配色
sort.val = "desc", # 按降序对值进行排序
sort.by.groups = F, # 组内不排序
x.text.angle = 90, # 旋转垂直x轴文本
ylab = "MPG z-score", # 添加y轴标签
legend.title = "MPG Group", # 添加图例标签
rotate = T, # 旋转坐标轴
ggtheme = theme_minimal(), # ggplot2主题
) + theme(axis.text.x = element_text(angle = 0, hjust = 0.5, vjust = 1))
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4a131955c33aa07fd874bcf17bc2cd2e.png)
5.棒棒糖图
- 当有大量值可视化时,棒棒糖图表是条形图的替代方案
- 基本图形
ggdotchart(dfm, x = "name", y = "mpg",
color = "cyl", # 按组着色
palette = c("#00AFBB", "#E7B800", "#FC4E07"), # 自定义颜色
sorting = "ascending", # 升序
add = "segments", # 将y = 0的线段添加到点
add.params = list(color = "cyl", size = 1), # 调整线段参数,颜色、大小
ggtheme = theme_pubr()
)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/461d6c6ec01090920b8649c8b215134b.png)
ggdotchart(dfm, x = "name", y = "mpg",
color = "cyl", # 按组着色
palette = c("#00AFBB", "#E7B800", "#FC4E07"), # 自定义颜色
sorting = "descending", # 降序
add = "segments", # 将y = 0的线段添加到点
add.params = list(color = "cyl", size = 1), # 调整线段参数,颜色、大小
rotate = T, # 旋转坐标轴
group = "cyl", # 组内排序
dot.size = 6, # 点的大小
label = round(dfm$mpg), # 将mpg值添加为点标签
font.label = list(color = "white", # 调整标签参数,颜色、大小、位置
size = 9,
vjust = 0.5),
ggtheme = theme_pubr() # ggplot2 主题
)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/59d6f1e83af9c8e4d03dcdf609050783.png)