【问题标题】:How to reduce the size of the legend in R Plot, while still making it readable?如何减小 R Plot 中图例的大小,同时仍使其可读?
【发布时间】:2016-08-24 21:17:06
【问题描述】:

我试图在 R 中使用两个 y 轴绘制多年来的一些数据。但是,每当我尝试包含图例时,图例都会主导我的情节。当我使用其他地方建议的解决方案时,如keyword 和/或使用cex 参数,在另一篇帖子here 中建议,它要么变得不可读,要么仍然太大。

这是我随机生成数据的示例:

#Create years
year.df <- seq(1974, 2014, 1) 

# Create y-axis data
set.seed(75)
mean1 <- rnorm(length(year.df), 52.49, 0.87) 
mean2 <- rnorm(length(year.df), 52.47, 0.96) 

#Create dataframe
df <- data.frame(cbind(year.df, mean1, mean2)) 

我想要第二个 y 轴,多年来这两种方式的差异

df$diff <- abs(df$mean1 - df$mean2)

当我使用下面的代码创建两个 y 轴进行绘图时:

par(mfrow=c(1,1), mar=c(5.1,4.1,4.1,5.1))
with(df, plot(year.df, mean1, type = "l", lwd=4, xlab="Year", ylab="Mean", ylim=c(48,58)))
with(df, lines(year.df, mean2, type = "l", col="green", lwd=4))

par(new=TRUE)
with(df, plot(year.df, diff, type="l", axes=FALSE, xlab=NA, ylab=NA, col="red", lty=5, ylim=c(0,10)))
axis(side = 4)
mtext(side = 4, line = 3, "Annual Difference")
legend("topleft",
       legend=c("Calculated", "MST", "Diff"),
       lty=c(1,1,5), col=c("black", "green", "red"))

我得到:

当我在legend() 中使用cex=0.5 参数时,它开始变得不可读:

有没有办法以清晰易读的方式格式化我的图例?比我有的更好?

【问题讨论】:

  • (a) 如果您保存绘图,文本的大小将取决于您保存的文件的尺寸。 (b) 您是否尝试过其他cex 值?如果cex = 0.5 太小,也许cex = 0.65 正好? (c) 你的传说占据了相当多的情节空间。最好直接用 text() 标记线条,让 y 轴上升到 55 和 7,这样您的数据会占用更多的绘图空间。
  • 我无法重现您的情节:我情节中的图例位于左上角,带有短线和可读文本。不过,旁注;你用过cexpt.cex(而不是cex)会让事情变得更好吗? (即保持cex接近1,缩小pt.cex。)

标签: r plot legend


【解决方案1】:

图例中的空白告诉我您手动加宽了绘图窗口。在手动调整大小时,图例无法很好地缩放。

解决方案是在绘图之前打开您需要的确切大小的绘图。在 Windows 中,这是通过 windows(width=10, height=8) 完成的。单位为英寸。 正如您在下面看到的,传说紧紧地坐在角落里。

【讨论】:

    【解决方案2】:

    显然,我忘了执行故障排除的第一步:关闭再打开。我今天早上醒来,再次运行脚本。即使使用cex = 0.5,结果也很好。我选择使用cex = 0.75。对于为什么会这样,我仍然会很感激。昨天花了很多时间试图修复我的图例,并且相同的代码有效并收到了这个产品 (cex=0.75):

    【讨论】:

      猜你喜欢
      • 2021-03-17
      • 2018-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-13
      • 1970-01-01
      • 2020-03-29
      • 1970-01-01
      相关资源
      最近更新 更多