# 来源 https://www.r2omics.cn/
library(tidyverse)
# 读取数据
= read.delim("https://www.r2omics.cn/res/demodata/circleBar.txt", sep = "\t", check.names = FALSE)
df
# 设置添加分组间隔
= 2
empty_bar = data.frame(Group = rep(unique(df$Group), each = empty_bar))
to_add setdiff(names(df), "Group")] = NA
to_add[= bind_rows(df, to_add) %>%
data arrange(Group) %>%
mutate(id = row_number())
# 设置添加label标签信息
= data %>%
label_data mutate(
angle = 90 - 360 * (id - 0.5) / n(),
hjust = ifelse(angle < -90, 1, 0),
hjust2 = ifelse(angle < -90, 0, 1),
label = ifelse(angle < -90, paste0(Sample," "), paste0(" ",Sample)),
angle = ifelse(angle < -90, angle + 180, angle)
)<- max(na.omit(data$Value)) # 获取最大值
numMax
# 绘图
ggplot(data, aes(x = as.factor(id), y = Value, fill = Group)) +
geom_bar(stat = "identity", alpha = 0.5) +
ylim(-0.5 * numMax, numMax * 1.2) +
theme_void() +
theme(
legend.position = c(0.5, 0.5)
+
) coord_polar() +
# 添加标签注释信息
geom_text(data = label_data, aes(x = id, y = Value, label = label, hjust = hjust),
color = "black", fontface = "bold",
alpha = 0.6, size = 2.5,
angle = label_data$angle, inherit.aes = FALSE) +
# geom_text(data=label_data, aes(x=id, y=Value, label=Value, hjust=hjust2),
# color="black", fontface="bold",alpha=0.6, size=2.5, angle= label_data$angle, inherit.aes = FALSE ) +
scale_fill_brewer(palette = "Set2")
R语言绘制圆形分组条形图
什么是圆形分组条形图?
圆形分组条形图(也称为极坐标条形图或圆形柱状图)是一种将传统的柱形图通过极坐标系转化为圆形呈现的图表类型。它的结构与普通的柱形图类似,只是数据并非以矩形柱子垂直展示,而是以圆形的形式沿着一个圆环呈现。
在这种图表中,数据的每个“柱”都表现为从圆心向外延伸的弧段(或条形),这些弧段的长度通常与数据的大小成比例。通过极坐标系,圆形分组条形图能够呈现出一系列数据之间的对比,同时具有较强的视觉冲击力和美感。每一组数据都可以在图中形成一个环状的分布,适用于显示周期性或环形数据。
绘图所需的数据
第一列是名称列。第2列为分组列,第三列为数值列。
demo数据可以在https://www.r2omics.cn/res/demodata/circleBar.txt下载。