R中具有2个分类变量和1个连续变量的线图

R中具有2个分类变量和1个连续变量的线图,r,ggplot2,categorical-data,linegraph,R,Ggplot2,Categorical Data,Linegraph,一般来说,我对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

一般来说,我对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
但它不起作用,图形上到处都是彩色(蓝色和红色)点,而不仅仅是两条线将它们连接起来。我想发布我得到的图表,因为我没有文字来解释,但这是我的第一篇文章,我似乎无法上传图片

我想得到一个标准的简单双线图,如本页中的蓝色和红色(其中y=账单总额,x=时间(午餐、晚餐),按性别分组):


对于我的数据集,这可能吗?如果是这样的话,我在代码上犯了什么错误?

在这里,我试图根据您的数据中的有限样本创建一个数据帧

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))
但是,如果应用汇总函数,该函数将计算每个条件的平均值,则将显示正确的绘图:

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')

同样,这是试图找出数据中的内容。最好的方法是在这里使用dput(head(df1,50))提供一个数据样本,以提供更好的答案

传递到
ggplot
的数据帧
summdfo
是如何定义的?如果允许共享数据集,请输入
dput(summdfo)
,并将输出放在示例中。这将使其他人有希望重现您的错误。命令dput(head(df1,50))产生大量输出。为了将来的参考,我可以把它全部贴在这里吗?谢谢你的解释,阿曼,现在我明白为什么我的折线图是乱七八糟的了。我刚刚尝试过添加乐趣。y='mean',它产生了我期望的输出!很高兴它能工作:)。关于dput(head(df1,50)),您可以尝试小于50的数字,例如10或20。但是,如果您有许多条件,并且这些条件未涵盖,则可能没有意义。或者,如果允许共享整个数据集,请将变量保存为CSV文件(write.CSV(df1,file='df1.CSV')并在Dropbox上共享。然后按照说明通过安全URL加载CSV文件。
ggplot(data=df1, aes(x=pos, y=totacc, group=trcond, color=trcond))+ 
  geom_line() + 
  geom_point()
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')