如何为quilt.plot添加图标题及图例标题?
解决quilt.plot添加标题和图例标题的问题
嘿,我看你在给quilt.plot调整标题和图例的时候踩坑啦~核心问题是quilt.plot是fields包的基础绘图函数,不属于ggplot2体系,所以不能用ggplot的+ theme()语法来改样式,得用基础绘图系统的参数或者fields包自带的参数来设置。咱一步步来修正:
1. 先修正核心错误:替换ggplot语法为基础绘图参数
你原来的代码里用了title参数(还多了个逗号),以及+ theme(),这都是ggplot的写法,quilt.plot不认。咱换成它支持的参数:
修正后的完整代码
library(fields) # 绘制quilt图并设置标题、图例标题 quilt.plot( x = depositionStats_y$xbins, y = depositionStats_y$ybins, z = depositionStats_y$n, nx = 100, ny = 100, xlim = c(-10, 100), ylim = c(-80, 80), FUN = function(x) sum(x), xlab = "Horizontal distance downwind of source (m)", ylab = "lateral distance (m)", # 去掉原来多余的逗号 main = "Deposited/remaining pestecides mass fraction", # 用main设置主标题 # 设置图例的标题和样式 legend.args = list( text = "Number of Particles", # 这里替换成你需要的图例标题 cex = 1, col = "black" ), # 可选:调整图例大小 legend.shrink = 0.8 ) # 如果你需要更精细的标题样式(比如居中斜体),用基础绘图的title函数补设置 title( main = "Deposited/remaining pestecides mass fraction", adj = 0.5, # 让标题居中 col.main = "black", cex.main = 12, font.main = 3 # font=3对应斜体样式 )
2. 把图例放到底部的额外设置
如果你坚持要把图例放到底部(像你原来代码里的legend.position = "bottom"需求),可以拆分绘图步骤:先画quilt图,再单独添加底部的水平图例:
library(fields) # 第一步:绘制quilt图,暂时不显示图例 par(mar = c(8, 4, 4, 2)) # 调整底部边距,给图例留空间 quilt.plot( x = depositionStats_y$xbins, y = depositionStats_y$ybins, z = depositionStats_y$n, nx = 100, ny = 100, xlim = c(-10, 100), ylim = c(-80, 80), FUN = function(x) sum(x), xlab = "Horizontal distance downwind of source (m)", ylab = "lateral distance (m)", main = "Deposited/remaining pestecides mass fraction", legend.only = FALSE # 不单独画图例 ) # 第二步:添加底部的水平图例 image.plot( z = depositionStats_y$n, legend.only = TRUE, horizontal = TRUE, # 设置为水平图例 legend.args = list( text = "Number of Particles", side = 1, # 图例放在底部(side=1对应底部) line = 2.5 # 调整图例与x轴的距离 ), legend.shrink = 0.8 )
关键知识点总结
- 别搞混绘图体系:quilt.plot属于基础绘图系统,和ggplot2的语法完全不兼容,不能用
+和theme()。 - 标题设置:用
quilt.plot的main参数快速加标题,或者用title()函数做精细化样式调整。 - 图例标题:靠
legend.args参数设置,想调整图例位置的话,结合image.plot单独绘制图例更灵活。
内容的提问来源于stack exchange,提问作者Meriem
相关产品推荐
相关产品推荐

