2013-06-23 23 views
3

我有一个用数字1:200标记的形状图。我想创建一个解码这些数字的图例。所以我尝试了(为了便于阅读,保持到20)。用两个字符pch符号绘制图例

plot(c(1,20), c(0,3), type="n") 
xx <- c(0,1,1,0) 
thelabels <- paste(LETTERS[1:20], LETTERS[1:20], sep="") 
for (i in 1:20){ 
    polygon(xx, c(0,0,1,1)) 
    text(mean(xx), 0.5, i) 
    xx <- xx + 1 
} 
legend("topleft", "groups", 
    legend = thelabels, pch=as.character(c(1:20)), 
    ncol=4 
) 

Attempted legend with numbers

但是,这并不工作,因为只有pch 1承认长度的字符串。我如何创建一个图例,其中的关键是基于数字1:200而不是每个数字的第一位数字?或者做一些等同于强迫pch接受多长度字符串的内容? (请注意,thelabels包含较长的文本,所以我不能直接与thelabels标记的形状。)

+0

你认为有200个标签的传奇人物仍然是可读? – agstudy

+0

大多数读者只会对一个条目感兴趣,图例的编号意味着200个标签是可行的。使用@ gung的方法有一个可读的结果。 – Hugh

+0

但我会接受另一种更具可读性的解码方法。 – Hugh

回答

3

这里有一个总 杂牌 解决方法:

plot(c(1,20), c(0,3), type="n") 
xx <- c(0,1,1,0) 
thelabels <- paste(1:20, " ", LETTERS[1:20], LETTERS[1:20], sep="") 
for (i in 1:20){ 
    polygon(xx, c(0,0,1,1)) 
    text(mean(xx), 0.5, i) 
    xx <- xx + 1 
} 
legend("topleft", "groups", 
     legend = thelabels, pch="", 
     ncol=4) 
+0

哈哈!我不想给复选标记,但我真的不能错过这个方法。 – Hugh

+0

如果你喜欢@Hugh,你可以删除复选标记。可能有一种“真实”的方式来做到这一点;我只是不知道它是什么。实际上,我认为这是一个有趣的问题。 – gung