Hello R-friends,
i have a question to the "text"-function.
a little test-dataset for better understanding:
-the dataset was imported with read.table(....,header=TRUE)
s1-s10 are the samplenames
var1 var2 var3
s1 1 1 2
s2 2 3 1
s3 2 2 3
s4 5 4 3
s5 4 2 3
s6 6 3 2
s7 8 5 4
s8 7 2 1
s9 9 3 2
s10 8 6 4
-then i??ve performed a pincipal component analysis with prcomp
-for displaying the result in a x,y-graph i transformed out.pca$x into the
dataframe points
points <- out.pca$x
> points
PC1 PC2 PC3
s1 -4.7055777 -0.14781544 -0.3683602
s2 -3.1854599 0.19661476 1.5212455
s3 -3.2687980 0.78193513 -0.6352458
s4 0.2278948 1.00061498 0.2164108
s5 -1.4382847 0.02500633 -0.9114340
s6 0.6216283 -0.68606440 0.2071083
s7 3.4951878 1.17343675 -0.3266629
s8 1.0153619 -2.37274378 0.1978058
s9 3.3673983 -1.82145761 -0.2071739
s10 3.8706492 1.85047328 0.3063065
- with plot(points$PC1, points$PC2, type="n") i start a graph without
displaying anything at the x,y-coordinates
- i want now to display the samplenames at the right x,y-coordinate; i
generated a dataframe called lab with the samplenames
> lab
V1
1 s1
2 s2
3 s3
4 s4
5 s5
6 s6
7 s7
8 s8
9 s9
10 s10
- i??ve studied the "text"-helppage and so i tried the following:
text(pca$PC1, pca$PC2, labels=lab)
- in the plot there is now c(1,3,4,5,6,7,8,9,10,2) displayed instead of s1-s10
is out there any idea what i'am doing wrong? is there maybe another way of
displaying the samplenames at the right x,y-coordinate?
greetings from the sunny tirol with thanks in advance
helli
platform i386-pc-mingw32
arch i386
os mingw32 - win xp
system i386, mingw32
status
major 2
minor 1.0
year 2005
month 04
day 18
language R
Helmut Kudrnovsky wrote:> Hello R-friends, > > i have a question to the "text"-function. > > a little test-dataset for better understanding: > > -the dataset was imported with read.table(....,header=TRUE) > s1-s10 are the samplenames > > var1 var2 var3 > s1 1 1 2 > s2 2 3 1 > s3 2 2 3 > s4 5 4 3 > s5 4 2 3 > s6 6 3 2 > s7 8 5 4 > s8 7 2 1 > s9 9 3 2 > s10 8 6 4 > > -then i??ve performed a pincipal component analysis with prcomp > > -for displaying the result in a x,y-graph i transformed out.pca$x into > the dataframe points > points <- out.pca$x > > points > PC1 PC2 PC3 > s1 -4.7055777 -0.14781544 -0.3683602 > s2 -3.1854599 0.19661476 1.5212455 > s3 -3.2687980 0.78193513 -0.6352458 > s4 0.2278948 1.00061498 0.2164108 > s5 -1.4382847 0.02500633 -0.9114340 > s6 0.6216283 -0.68606440 0.2071083 > s7 3.4951878 1.17343675 -0.3266629 > s8 1.0153619 -2.37274378 0.1978058 > s9 3.3673983 -1.82145761 -0.2071739 > s10 3.8706492 1.85047328 0.3063065 > > - with plot(points$PC1, points$PC2, type="n") i start a graph without > displaying anything at the x,y-coordinatesI think points should be a matrix rather than a list or data.frame, hence the code above won't work. Instead: plot(points[,"PC1"], points[,"PC2"], type="n")> - i want now to display the samplenames at the right x,y-coordinate; i > generated a dataframe called lab with the samplenames > > > lab > V1 > 1 s1 > 2 s2 > 3 s3 > 4 s4 > 5 s5 > 6 s6 > 7 s7 > 8 s8 > 9 s9 > 10 s10 > > - i??ve studied the "text"-helppage and so i tried the following: > text(pca$PC1, pca$PC2, labels=lab)Hmm, what is pca ??? lab <- rownames(points) text(points[,"PC1"], points[,"PC2"], labels=lab) works for me.> - in the plot there is now c(1,3,4,5,6,7,8,9,10,2) displayed instead of > s1-s10Quite probably you lab was a *factor* ...> is out there any idea what i'am doing wrong? is there maybe another way > of displaying the samplenames at the right x,y-coordinate?We cannot say what you did wrong when constructing your plot, but we know that your descibtion above is wrong, because it does not even work to generate the empty plot the way ... Please read the posting guide and rethink at least one time whether the code you are giving us is reproducible. Your code was not. Uwe Ligges> greetings from the sunny tirol with thanks in advance > helli > > platform i386-pc-mingw32 > arch i386 > os mingw32 - win xp > system i386, mingw32 > status > major 2 > minor 1.0 > year 2005 > month 04 > day 18 > language R > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html
Dear Helmut, The problem is that you're implicitly coercing the entire data frame lab to character, producing> as.character(lab)[1] "c(1, 3, 4, 5, 6, 7, 8, 9, 10, 2)" The numbers themselves come from the numeric coding of the factor V1 in this data frame; as.numeric(lab$V1) shows you what's going on. Instead you could specify labels=lab$V1 in the text() command. But why put the row names in a data frame in the first place; why not simply use labels=rownames(out.pca)? I hope this helps, John -------------------------------- John Fox Department of Sociology McMaster University Hamilton, Ontario Canada L8S 4M4 905-525-9140x23604 http://socserv.mcmaster.ca/jfox --------------------------------> -----Original Message----- > From: r-help-bounces at stat.math.ethz.ch > [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Helmut > Kudrnovsky > Sent: Sunday, May 29, 2005 11:08 AM > To: r-help at stat.math.ethz.ch > Subject: [R] "text"-function: adding text in an x,y-plot > > Hello R-friends, > > i have a question to the "text"-function. > > a little test-dataset for better understanding: > > -the dataset was imported with read.table(....,header=TRUE) > s1-s10 are the samplenames > > var1 var2 var3 > s1 1 1 2 > s2 2 3 1 > s3 2 2 3 > s4 5 4 3 > s5 4 2 3 > s6 6 3 2 > s7 8 5 4 > s8 7 2 1 > s9 9 3 2 > s10 8 6 4 > > -then i??ve performed a pincipal component analysis with prcomp > > -for displaying the result in a x,y-graph i transformed > out.pca$x into the dataframe points > points <- out.pca$x > > points > PC1 PC2 PC3 > s1 -4.7055777 -0.14781544 -0.3683602 > s2 -3.1854599 0.19661476 1.5212455 > s3 -3.2687980 0.78193513 -0.6352458 > s4 0.2278948 1.00061498 0.2164108 > s5 -1.4382847 0.02500633 -0.9114340 > s6 0.6216283 -0.68606440 0.2071083 > s7 3.4951878 1.17343675 -0.3266629 > s8 1.0153619 -2.37274378 0.1978058 > s9 3.3673983 -1.82145761 -0.2071739 > s10 3.8706492 1.85047328 0.3063065 > > - with plot(points$PC1, points$PC2, type="n") i start a graph > without displaying anything at the x,y-coordinates > > - i want now to display the samplenames at the right > x,y-coordinate; i generated a dataframe called lab with the > samplenames > > > lab > V1 > 1 s1 > 2 s2 > 3 s3 > 4 s4 > 5 s5 > 6 s6 > 7 s7 > 8 s8 > 9 s9 > 10 s10 > > - i??ve studied the "text"-helppage and so i tried the following: > > text(pca$PC1, pca$PC2, labels=lab) > > - in the plot there is now c(1,3,4,5,6,7,8,9,10,2) displayed > instead of s1-s10 > > is out there any idea what i'am doing wrong? is there maybe > another way of displaying the samplenames at the right x,y-coordinate? > > greetings from the sunny tirol with thanks in advance helli > > platform i386-pc-mingw32 > arch i386 > os mingw32 - win xp > system i386, mingw32 > status > major 2 > minor 1.0 > year 2005 > month 04 > day 18 > language R > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html