如何用R绘制以项目阶段为Y轴的定制化气泡图?
在R中创建多维度气泡图(Y轴为项目阶段)
完全可以用ggplot2包实现你想要的气泡图效果,以下是具体解决方案:
步骤1:数据预处理
首先需要将数据中的字符型数值转换为数值型,方便后续映射:
# 加载ggplot2包 library(ggplot2) # 转换数据类型 test$total <- as.numeric(test$total) test$x <- as.numeric(test$x)
步骤2:绘制气泡图
方案1:使用你提供的X坐标定位气泡(更贴近示例图)
直接用你数据里的x值来控制气泡的水平位置,Y轴绑定项目阶段,气泡大小映射项目数量,颜色映射状态:
ggplot(test, aes(x = x, y = stage, size = total, color = status)) + geom_point(alpha = 0.8) + # 自定义气泡大小范围,避免过大/过小 scale_size(range = c(3, 15)) + # 自定义状态颜色(可根据需求调整) scale_color_manual(values = c( "At Risk" = "#e74c3c", "On Hold" = "#f39c12", "On Track" = "#2ecc71", "Completed" = "#3498db" )) + # 隐藏X轴的无意义标签和刻度 theme_minimal() + theme( axis.title.x = element_blank(), axis.text.x = element_blank(), axis.ticks.x = element_blank(), panel.grid.major.x = element_blank() ) + labs( y = "项目阶段", size = "项目数量", color = "项目状态" )
方案2:固定X值+抖动分散气泡(更简洁的实现)
如果不需要精确的X坐标,可设置固定X值,通过抖动让同一阶段的气泡自动分散,避免重叠:
ggplot(test, aes(x = 1, y = stage, size = total, color = status)) + geom_point(position = position_jitter(width = 0.2, height = 0), alpha = 0.8) + scale_size(range = c(3, 15)) + scale_color_manual(values = c( "At Risk" = "#e74c3c", "On Hold" = "#f39c12", "On Track" = "#2ecc71", "Completed" = "#3498db" )) + theme_minimal() + theme( axis.title.x = element_blank(), axis.text.x = element_blank(), axis.ticks.x = element_blank(), panel.grid.major.x = element_blank() ) + labs( y = "项目阶段", size = "项目数量", color = "项目状态" )
内容的提问来源于stack exchange,提问作者Chen
相关产品推荐
相关产品推荐

