如何移除ggplot2 geom_contour等高线图周围的灰色面板?
移除ggplot2填充等高线图的默认灰色边框
ggplot2默认会在图表周围添加缓冲区域,避免数据延伸至轴线位置,这在多数场景下很实用。但对于等高线图或填充等高线图而言,这种默认的灰色边框会显得突兀——毕竟图表本身已布满色彩。
以下是生成带灰色边框的等高线图示例代码:
# 使用ggplot2绘制等高线图 library(ggplot2) library(reshape2) # 用于melt()函数 library(RColorBrewer) # 用于brewer.pal()函数 z.molten <- melt(z.lattice) names(z.molten) <- c("x", "y", "z") v <- ggplot(z.molten, aes(x, y, z = z)) + geom_tile(aes(fill = z)) + stat_contour(bins = 6, aes(x, y, z = z), color = "black", size = 0.6) + scale_fill_gradientn(colours = brewer.pal(6, "YlOrRd")) v
运行后会得到带有灰色边框的等高线图。
解决办法
要移除灰色边框,只需取消x轴和y轴的默认缓冲区域,让填充区域完全贴合图表边缘:
方法1:单独设置轴的扩展参数
适用于所有ggplot2版本:
# 移除灰色边框的等高线图 library(ggplot2) library(reshape2) library(RColorBrewer) z.molten <- melt(z.lattice) names(z.molten) <- c("x", "y", "z") v <- ggplot(z.molten, aes(x, y, z = z)) + geom_tile(aes(fill = z)) + stat_contour(bins = 6, aes(x, y, z = z), color = "black", size = 0.6) + scale_fill_gradientn(colours = brewer.pal(6, "YlOrRd")) + # 取消x轴和y轴的缓冲区域 scale_x_continuous(expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0)) v
方法2:使用coord_cartesian简化设置
适用于ggplot2 3.3.0及以上版本,可一次性取消两个轴的缓冲:
# 移除灰色边框的等高线图(简洁版) library(ggplot2) library(reshape2) library(RColorBrewer) z.molten <- melt(z.lattice) names(z.molten) <- c("x", "y", "z") v <- ggplot(z.molten, aes(x, y, z = z)) + geom_tile(aes(fill = z)) + stat_contour(bins = 6, aes(x, y, z = z), color = "black", size = 0.6) + scale_fill_gradientn(colours = brewer.pal(6, "YlOrRd")) + coord_cartesian(expand = FALSE) v
处理后,填充区域会完全覆盖图表范围,灰色边框即可消除。
内容的提问来源于stack exchange,提问作者Ken
相关产品推荐
相关产品推荐

