【问题标题】:Change Symbol Borders in R Legend更改 R 图例中的符号边框
【发布时间】:2016-04-25 15:22:47
【问题描述】:

我使用 pch = 22 和 lty = 1 做了以下图例:

我想将其中一些 pch 22 符号的边框类型更改为虚线。似乎应该有一个相当简单的解决方案,但我无法弄清楚。

我的代码如下:

plot(1, type = 'n')
legend("top",legend=c("CU","SL","SU","L","F"),lty=c(1,1,1,1,1),
       pch=c(22,22,22,22,22),pt.cex=4,cex=1.5,
       col=c("red","blue","green","orange","grey47"),        
       pt.bg=adjustcolor(c('red','blue','green','orange','grey'), alpha.f = .5),
       bty='n',horiz=T,lwd=c(2,2,2,2,2),x.intersp=0.5)

【问题讨论】:

  • 您可以将其中一些的线型更改为 3,但这不会更改 pch 边框。我实际上从未见过。 pch 通常很小,以至于这似乎不合理。如果它真的那么重要,您可以制作小rects 并更改边界线类型?
  • 我没有看到legend 的任何形式参数被记录为影响矩形的线型。此外,您忘记引用其中一些颜色。有可能使用pch(因为它使用points),而是破解传递给rect和internalrect2函数的参数代码。
  • 我的破解代码的建议在我手中失败了。

标签: r symbols


【解决方案1】:

一个 hacky 选项是使用 Unicode 符号来获得我希望的东西接近你所追求的东西。

我们需要绘制图例两次才能完成这项工作。首先,我们通过将边框颜色更改为NA,在最左边的两个框上绘制没有任何边框的图例。然后我们再次绘制图例,这次使用 Unicode 符号表示我们上次遗漏的两个框边框的虚线正方形。我还必须手动调整pt.cex 的值,使虚线框的大小与pch=22 符号的大小相同。

我还必须使用“Cambria Math”字体才能正确渲染虚线框。我添加了注释掉的代码来使用该字体。如果您的系统上没有该字体,您可能需要尝试几种不同的字体系列,以找到一种适用于所需 Unicode 符号的字体。

# par(family="Cambria Math")

plot(1, type = 'n')

legend(0.8,1.4,legend=c("CU","SL","SU","L","F"),lty=c(1,1,1,1,1),
       pch=rep(22,5),
       pt.cex=6.8,cex=1.5,
       col=c(NA,NA,"green","orange","grey47"),        
       pt.bg=adjustcolor(c('red','blue','green','orange','grey'), alpha.f = .5),
       bty='n', horiz=T, lwd=c(2,2,2,2,2), x.intersp=0.5)

legend(0.8,1.4,legend=c("CU","SL","SU","L","F"),lty=c(1,1,1,1,1),
       pch=c("\u2B1A","\u2B1A",NA,NA,NA),
       pt.cex=4,cex=1.5,
       col=c("red","blue","green","orange","grey47"),        
       pt.bg=adjustcolor(c('red','blue','green','orange','grey'), alpha.f = .5),
       bty='n', horiz=T, lwd=c(2,2,2,2,2), x.intersp=0.5)

【讨论】:

    猜你喜欢
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多