使用 R 中的 Visreg 包更改图例位置

Posted

技术标签:

【中文标题】使用 R 中的 Visreg 包更改图例位置【英文标题】:Changing legend position using Visreg package in R 【发布时间】:2018-01-15 04:01:09 【问题描述】:

我正在使用 Visreg 来可视化带有交互项的负二项式一般线性模型。我遇到的问题是,当使用 overlay=TRUE 时,图例会指出哪些行对应于“by”变量的哪个级别被放置在图表顶部,直接位于标题上方。我通过在标题末尾添加返回尝试了一种奇怪的解决方法,但是我发现当我将图形重新调整为更大时,图例被推高直到它完全隐藏。

我的代码:

visreg(fit, "med.income.2010.scale", by="hs.edu.2010", overlay=TRUE, 
partial=FALSE, scale="response", 
   main="Inspection Rates by Income and Education",
   ylab="Predicted Routine Inspections",
   xlab="Median Household Income (thousands)",
   strip.names=c("10th Percentile", "50th Percentile", "90th Percentile"),
   legend=TRUE)

有什么想法吗?

【问题讨论】:

我们能否提供一个可重现的示例...? 感谢 Ben 的关注,实际上我最终找到了一种解决方法,将 visreg 输出分配给一个对象,(v=visreg(fit, etc...)) 用 r 的基本图绘制它函数(plot(v, etc...),并使用它后面的图例函数。 请发布您的解决方案作为答案。 【参考方案1】:

我最终通过将 visreg 输出分配给一个对象找到了解决方法,(v=visreg(fit, etc...)) 用 r 的基本绘图函数(plot(v, etc...))绘制它,并使用它后面的图例函数。

我的完整代码是

'v= visreg(m1.routine.inspect, "med.income.2010.scale", by="hs.edu.2010", overlay=TRUE, partial=FALSE, scale="response", legend=FALSE)'

plot(v, overlay=TRUE, legend=FALSE,
 main="Inspection Rates by Income and Education,\nInteraction Term Excluded",
 ylab="Predicted Routine Inspections per well",
 xlab="Median Household Income (thousands)",
 font.lab=1,
 yaxs="i",
 ylim=c(0,1.1),
 cex.lab=1)

legend.enhanced("bottomright", 
   c("10th Percentile", "50th Percentile", "90th Percentile"),
   lty=1,
   lwd=3,
   col=c("red", "forestgreen", "royalblue"),
   bty="n",
   title=expression(underline("HS Grad Rate")),
   horiz=FALSE,
   y.intersp=.5,
   x.intersp=.5,
   title.adj=c(.5,0),
   title.col="black",
   seg.len =1,
   cex=1,
   yjust=.3,
   text.font = NULL,
   inset = .05
   )

通常您只会使用 legend(....),但用户发布了一个修改后的函数,可以更好地调整图例标题。

【讨论】:

以上是关于使用 R 中的 Visreg 包更改图例位置的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中更改图形的字体

如何在 r 中更改和/或分离图形图例中的组件?

在报表生成器中更改图表中的图例

在 R 中使用 plot_ly 单独更改图例

无法在 R 中使用 ggplot2 更改图例标题和标签

单击后保持 NVD3 图例的更改位置