如何在R中实现4个嵌套圆形沿底边对齐的可视化效果
实现方案
你可以使用ggplot2搭配ggforce包实现需求,以下是可直接运行的完整代码:
# 未安装对应包可先运行下一行安装 # install.packages(c("ggplot2", "ggforce")) # 加载依赖包 library(ggplot2) library(ggforce) # 读取示例输入数据 d <- read.table(text = "circle:x Circle1:340000 Circle2:5000 Circle3:1100 Circle4:340", header = TRUE, sep = ":") # 计算圆形参数 max_val <- max(d$x) # 按面积与数值成正比计算半径,最大圆半径设为10,可按需调整 d$radius <- sqrt(d$x / max_val) * 10 # 固定所有圆x坐标为同一值,y坐标设为自身半径,保证底边对齐在y=0水平线 d$x_pos <- 0 d$y_pos <- d$radius
# 绘制嵌套对齐圆形 ggplot() + # 按半径从大到小绘制,避免小圆被遮挡 geom_circle(data = d[order(-d$radius), ], aes(x0 = x_pos, y0 = y_pos, r = radius, fill = circle), alpha = 0.7, color = "black") + # 强制坐标等比例,避免圆形变形为椭圆 coord_equal() + # 极简主题,移除无关坐标轴元素 theme_void() + labs(fill = "圆形分类")
逻辑说明
- 尺寸对应逻辑:圆形面积和输入数值成正比,因此半径取
数值/最大值的平方根再乘以最大圆半径,符合要求的尺寸比例规则 - 对齐逻辑:所有圆形y坐标等于自身半径,因此每个圆的底部位置均为
y_pos - radius = 0,天然实现沿同一底边对齐,x坐标统一则实现嵌套效果
内容的提问来源于stack exchange,提问作者katebeckett
相关产品推荐
相关产品推荐

