# 来源 https://www.r2omics.cn/
#加载包
library(tidyverse)
#创建数据集
= read.delim("https://www.r2omics.cn//res/demodata/rose.txt",check.names = F)
df
= df %>%
dfPlot mutate(Percent = paste0(round(Count/sum(Count)*100,2),"%") ) # 计算各样本占总数的百分比
# 使用ggplot2创建玫瑰图
ggplot(dfPlot, aes(x = Sample, y = Count, fill = Sample)) + # 设置x轴为样本类型,y轴为数量,填充颜色按样本类型区分
geom_bar(width = 1, color = 'black', stat = 'identity') + # 绘制柱状图,宽度为1,边框为黑色
coord_polar(theta = 'x') + # 将直角坐标系转换为极坐标系,形成饼图效果
geom_text(aes(label = Percent),hjust = 1) + # 添加百分比标签
::scale_fill_sci(palette="rainbow1")+ # 设置颜色,采用ggstyle包中的彩虹色
ggstyletheme_bw() +
theme(
panel.border = element_blank(), # 移除图表边框
axis.text.y = element_blank(), # 移除y轴刻度标签
axis.ticks.y = element_blank(), # 移除y轴刻度线
legend.position = 'none' # 不显示图例
)
R语言绘制玫瑰图
前言
本篇是R语言ggplot2包绘制玫瑰图的教程。
编辑:小七
什么是玫瑰图?
玫瑰图其实就是极坐标柱形图。
花瓣的本质:由柱状图在极坐标系下转换而来,每个 “花瓣” 对应一个样本类别(如示例数据中sample1 至 sample7),呈现为从圆心向外延伸的扇形柱体。
花瓣的长度:由对应样本的 Count 值决定,长度越长表示该样本的数量越多,长度越短表示数量越少
- 上文的玫瑰图通过极坐标转换,将原本的柱状图转化为放射状的 “花瓣” 形态,既保留了类别间的数量对比(长度差异),同时结合填充色和百分比标签,呈现了不同样本的数量特征及占比结构,适合直观展示多类别数据的大小对比。
绘图所需数据
第一列为名称,第二列为数据。
demo数据可以在这里下载https://www.r2omics.cn//res/demodata/rose.txt