2010-02-11 34 views
5

我有两个相等长度的数字向量。如何在使用第二个向量中的相应元素作为打印字符时绘制第一个向量? (背景:我对第一列进行了排序,第二列保存了原始索引,我希望使用索引作为可打印字符,以便我可以看到哪些数据点是异常值,因为每个数字表示一次数据运行)。R - 如何将一个向量的内容用作图中的符号?

> x 
$x 
[1] 25 29 30 34 38 572 700 733 870 879 899 934 982 1054 1135 1258 
[17] 1315 1491 1685 1700 2069 2131 2284 3498 3506 4467 4656 5633 6642 8348 

$ix 
[1] 23 3 18 30 13 8 4 14 11 17 12 29 9 15 19 16 7 1 20 2 6 28 21 10 5 22 24 26 
[29] 25 27 

首先向量为x $ X,第二个向量为x $九

我试过图(X $ X,PCH = STR(调用排序与index.return = TRUE的结果)( x $ ix)),但是会以数字方式处理x $ ix。如果这是Python,我会做一些像string = [str(x)for x in x $ ix]。但这是R,我已经忘记了大部分我以前知道的东西。

我发现,你可以为了得到琴弦做as.character(X $ IX),

> as.character(x$ix) 
[1] "23" "3" "18" "30" "13" "8" "4" "14" "11" "17" "12" "29" "9" "15" "19" "16" 
[17] "7" "1" "20" "2" "6" "28" "21" "10" "5" "22" "24" "26" "25" "27" 

,我可以用这个作为输入到PCH。但只使用第一个字符(并根据文档,这是正常的)。

我知道有一种方法可以做到这一点;我在大学里做过。但我无法记住我是如何做到的。

图无标签: alt text http://i47.tinypic.com/2aep88.png

图与标签,但不正确的: alt text http://i50.tinypic.com/2cicxtu.png

回答

9

这应该工作:

x = 1:4 
y = x 
plot(x, y, ann=F, axis=F, col="blue", pch=16) 
text(x, y, labels=c("1st", "2nd", "3rd", "4th"), col="red", pos=c(3,4,4,1), offset=0.6) 

只需将您的非数据载体(含一标签)到字符向量: labels = as.character(label_vector)

然后将其替换为上面第4行中的第三个参数。

'文本'功能相当通用,因为您可以通过的各种参数 - 例如(如上例),您可以将文本设置为与使用“col”的数据点不同的颜色;您还可以分别为每个文本标签指定位置(相对于给定文本标签注释的数据点)。例如,让文本标签避免重叠其中一个轴是非常有用的,这是我第一次运行此示例时未发生“pos”的情况。因此,通过设置'pos'(如c(3,4,4,1)),我将文本标签的位置设置为“上”,“右”,“右”和“下” - 移动第一个数据指向它,因此它不会撞到底部的x轴,并且向下移动第四个,所以它不会碰到顶部的x轴。此外,使用'偏移'(默认值为0.5),您可以指定位置调整的大小。

+0

Ahaaaa,我知道有一个功能绘制字符串。感谢你的快速回复。我也不知道pos论证 - 这非常有用。再次感谢! – I82Much

+0

没问题 - 很高兴知道你发现它有帮助。 – doug

3

这里是一个办法做到这一点使用ggplot2包:

library(ggplot2) 
x <- rnorm(10) 
y <- rnorm(10) 
labs <- 1:10 
ggplot()+geom_text(aes(x=x,y=y,label=labs)) 

enter image description here

0

下面是使用lattice一个非常基本的解决方案:

dat <- data.frame(x = rnorm(10), y = rnorm(10), 
        labs = as.character(1:10)) 
xyplot(y~x,data = dat,panel = function(x,labs){ 
           panel.text(x,y,labels = labs)}, 
     labs = dat$labs) 

enter image description here

相关问题