在R中使用两个分类变量和一个连续变量制作折线图。

3

我对R和统计学都比较陌生。我正在尝试在ggplot2中绘制一条线图,其中包含两个分类变量(词性“pos”,条件“trcond”)和一个数值变量(得分“totacc”)。

> df1<-df[, c("trcond", "subtitle", "pos", "totacc")]
> head(df1)
   trcond     subtitle pos totacc
7       L New Scene_16 lex  0.250
29      N New Scene_16 lex  0.500
8       L New Scene_25 lex  0.875
30      N New Scene_25 lex  0.666
9       L New Scene_29 lex  1.000
31      N New Scene_29 lex  0.833

我使用了这个ggplot2命令:

>ggplot(data=summdfo, aes(x=pos, y=totacc, group=trcond, colour=trcond))
+ geom_line() + geom_point()

但是它并没有起作用,图表上有许多着色的圆点(蓝色和红色),连接它们的线条不止两条。 我想发布我得到的图表,因为我缺乏解释的词语,但这是我的第一篇帖子,似乎我无法上传图片。
我想要一个标准的简单的双折线图,就像这个页面中的蓝色和红色折线图一样(其中y=总账单,x=时间(午餐、晚餐),按性别分组):http://www.cookbook-r.com/Graphs/Bar_and_line_graphs_%28ggplot2%29/ 我的数据集是否可以实现这个? 如果可以,那么我的代码有什么问题?

summdfo在传递到ggplot时如何定义的? - Alex A.
如果您被允许分享数据集,请输入 dput(summdfo) 并将输出放入您的示例中。这将使其他人有望重现您的错误。 - JasonAizkalns
1个回答

9

我尝试根据你的数据中有限的样本创建一个数据框架。

df1 <- data.frame(trcond=rep(c('L', 'N'), 3), 
                  subtitle=rep('New Scene_29', 6),  # Not in use, just a dummy
                  pos=c('lex', 'lex', 'lex', 'noLex', 'noLex', 'noLex'), 
                  totacc=c(0.250, 0.5, 0.875, 0.666, 1.000, 0.833))

由于该数据框中的trcond pos不平衡,因此绘图会像这样混乱:

ggplot(data=df1, aes(x=pos, y=totacc, group=trcond, color=trcond))+ 
  geom_line() + 
  geom_point()

然而,如果您应用一个汇总函数来计算每个条件的平均值,正确的图表将会出现:

enter image description here

ggplot(data=df1, aes(x=pos, y=totacc, group=trcond, color=trcond))+ 
  geom_line(stat='summary', fun.y='mean') + 
  geom_point(stat='summary', fun.y='mean')

enter image description here 再次强调,这是为了了解您的数据内容。最好提供一个使用dput(head(df1, 50))命令的数据样本,以便我们给出更好的答案。


命令dput(head(df1, 50))会产生大量输出。以后参考,我可以在这里完整地发布吗?感谢你的解释,阿曼,现在我明白为什么我的折线图混乱了。我刚刚尝试添加fun.y='mean',它产生了我期望的输出! - Val
很高兴它能正常工作 :). 关于dput(head(df1, 50)),你可以尝试比50更小的数字,例如10或20。然而,如果你有许多条件并且它们没有被覆盖,这可能没有意义。或者,如果你被允许分享整个数据集,将变量保存为CSV文件(write.csv(df1, file='df1.csv')并在Dropbox上分享它。然后按照这里的说明(http://is.gd/Gc08hv)通过安全URL加载CSV文件。 - arman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接