2017-02-20 75 views
2

我想绘制一个图例中的水平符号和下面一行符号下的相应标签。图例将绘制在边距中(不包含在示例数据中)。有没有办法使用图形参数来解决这个与legend()函数?否则,我会尝试文本标签,但我更喜欢更易于管理的方法。如何在R的不同行上绘制图例符号和标签?

我有这样的例子数据:

plot(c(1,2,3,4,5), c(1,2,3,4,5), xlim=c(0,5), ylim=c(0,5), main = "", xlab = "", ylab = "") 

legendEntries <- c(0.05, 0.1, 0.15, 0.2, 0.25) # which values in legend 
legendSizes <- sqrt(legendEntries/pi) * 10 # calculate pch size 
legend(1, 2, title="", horiz = T, legend=legendEntries, col="black", pch=rep(21,5), 
    pt.bg = "#ff166c", pt.cex = legendSizes, bty = "n") 

而且要创造这样的事情:

legend example

谢谢!

保罗

(编辑:文本和额外的信息添加图片)

回答

0

您可以分别绘点和文字。

喜欢的东西:

# Make the basic plot 
    plot(c(1,2,3,4,5), c(1,2,3,4,5), xlim=c(0,5), ylim=c(0,5), main = "", xlab = "", ylab = "") 
    # set up the legend entries and sizes 
    legendEntries <- c(0.05, 0.1, 0.15, 0.2, 0.25) # which values in legend 
    legendSizes <- sqrt(legendEntries/pi) * 10 # calculate pch size 

# plot the legend points 
    points(y = rep(1, 5), x = seq(3,4, 0.25), pch = 21, cex = sqrt(legendEntries/pi) * 10, 
      bg = "#ff166c") 
# plot the text 
    text(y = rep(0.7, 5), x = seq(3,4, 0.25), 
     labels = legendEntries) 

有关(在边缘IE)绘制的情节区域之外,你可以使用XPD参数为xpd = TRUE

plot(c(1,2,3,4,5), c(1,2,3,4,5), xlim=c(0,5), ylim=c(0,5), main = "", xlab = "", ylab = "") 

legendEntries <- c(0.05, 0.1, 0.15, 0.2, 0.25) # which values in legend 
legendSizes <- sqrt(legendEntries/pi) * 10 # calculate pch size 

points(y = rep(-0.8, 5), x = seq(1,2, 0.25), pch = 21, cex = sqrt(legendEntries/pi) * 10, 
     bg = "#ff166c", xpd = TRUE) 
text(y = rep(-1, 5), x = seq(1,2, 0.25), 
    labels = legendEntries, xpd = TRUE) 
+0

谢谢,但我正在努力在剧情边缘上绘制传奇。这似乎只适用于情节区域。我可以尝试将“绘制文本”部分与图例()相结合,但我希望有一种使用图形参数来解决它的方法。 – user134303

+0

查看我的回答编辑 – ira

+0

很好,谢谢。我可以与此合作。由于我想要的图例非常基本,我并不需要legend()函数。 – user134303

相关问题