求助:如何用ggplot2复刻含横竖分类轴的点图?
复刻分类点图的ggplot2实现
参考图的核心结构是纵轴为样本类型(type),横轴为特征(trait),每个交叉位置用点表示样本具备对应特征,无点则表示不具备。以下是针对你的示例数据的优化实现:
修正后的完整代码
# 加载所需包 library(ggplot2) library(reshape2) # 创建示例数据集 df <- data.frame(type=c("A","B","C","D"), trait1=c(1,1,0,0), trait2=c(1,0,1,0)) # 转换为长格式 melt_df <- melt(df) # 绘制复刻版点图 ggplot(melt_df[melt_df$value == 1, ], aes(x = variable, y = type)) + geom_point(size = 8, color = "#333333") + scale_x_discrete(position = "top") + labs(x = "特征", y = "类型") + theme_minimal() + theme( panel.grid.major = element_blank(), panel.grid.minor = element_blank(), axis.text = element_text(size = 12), axis.title = element_text(size = 14) )
关键调整说明
- 数据过滤:只保留
value=1的记录,确保只有具备特征的位置显示点 - 轴映射调整:将
x设为特征(variable)、y设为样本类型(type),匹配参考图的轴布局 - 几何对象替换:用
geom_point替代geom_dotplot,实现每个交叉位置的独立点效果(而非堆叠点) - 主题优化:隐藏网格线、调整文字大小,让图表风格更贴近参考图的简洁感
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

