如何在R中使用ggplot2将两个DataFrame的图形叠加显示?
解决ggplot叠加散点与矩形的问题
你不需要合并两个ggplot对象,直接在同一个绘图流程里叠加不同图层就行,每个图层可以单独指定对应的数据源。修改后的代码如下:
ggplot(grid) + ggtitle("top+bot") + aes(x, y) + # 散点图层,使用grid数据集 geom_point(shape=15, color = "blue", size = 2, alpha = (grid$z/op)) + # 矩形图层,指定def为数据源,单独设置矩形的映射参数 geom_rect(data = def, aes(xmin = xbegc, xmax = xendc, ymin = ybegc, ymax = yendc), alpha = 0.3) + # 注意:alpha取值范围是0-1,之前的8会被自动转为1(完全不透明) scale_x_continuous(name= "length (m)", breaks=seq(0, max(fullgrid[,"x"]), step)) + scale_y_continuous(name= "width (mm)", breaks=seq(0, max(fullgrid[,"y"]), 100)) + expand_limits(x = 0, y = 0) + coord_cartesian(expand = FALSE) + theme(plot.title = element_text(size=10, hjust = 0.5), axis.title.x = element_text(size=10), axis.text.x= element_text(angle=30, hjust=1), axis.title.y = element_text(size=10), axis.text.y= element_text(angle=30, hjust=1))
关键注意点:
- 所有图层都叠加在同一个
ggplot()基础上,无需单独创建第二个ggplot对象 geom_rect通过data = def指定专属数据源,同时在aes中设置矩形特有的映射参数(xmin/xmax/ymin/ymax)- alpha参数的有效范围是0(完全透明)到1(完全不透明),超出范围的数值会被ggplot自动修正为边界值
内容的提问来源于stack exchange,提问作者Eliaschf
相关产品推荐
相关产品推荐

