我有以下数据:

subject = c("S01","S02","S03","S04","S05","S06","S07","S08","S09","S10")
post    = c(100,80,75,120,85,90,95,90,110,100)
pre     = c(45,60,80,75,45,60,55,50,35,40)
data1 = as.data.frame(cbind(subject, post, pre))

然后,我根据发布列对数据进行了排序:
data1 = data1[order(data1$post),]

最后,我想提供的是一个散布图,比较了柱子和柱子的柱头,并相应地用了不同的颜色。 X轴只是数据框的索引,但标有主题编号,因此,轴标签将按照主题编号的顺序排列,因为数据框按发布列排序

如果我这样做:
plot(data1$post)

我所拥有的是条形图,甚至没有散点图。这是因为帖子列是一个因素吗?我为发布前列和前列尝试了“as.numeric”,但是结果是一样的

如果我这样做:
plot(data1$post,data1$pre)

我有一个散点图,但是索引从1到20。因此,我没有在相同的索引1到10上进行比较散点,而是有两个散点,索引从1-10和11-20。

指出我的错误的任何帮助将不胜感激。

最佳答案

称其为“散点图”是不正确的。变量之一是分类变量,并且值是成对的。它实际上是点图的变体。使用as.data.frame(cbind(.))的做法造成了数据怪异。

> data1
   subject post pre
1      S01  100  45
10     S10  100  40
9      S09  110  35
4      S04  120  75
3      S03   75  80
2      S02   80  60
5      S05   85  45
6      S06   90  60
8      S08   90  50
7      S07   95  55

所有这些列都是因素,而不是明确打算的数字:

请改用以下代码:
data1 = data.frame(subject=subject, post=post, pre=pre)
data1 = data1[order(data1$post),];
plot(data1$pre,type="p",ylim=range(data1$pre,data1$post),
      xaxt="n", ylab="Pre/Post Scores: black=Pre, red=Post")
points(data1$post,col='red')
axis(1, at=1:10, labels=levels(data1$subject)[order(post)])

最后一行可能是:
axis(1, at=1:10, labels=as.character(data1$subject))) # since the set was sorted by `post`

关于r - R中排序数据的散点图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9965193/

10-12 17:54
查看更多