我正在尝试用ggplot创建一个图,该图显示了基频随时间的多条曲线。我正在查看不同类型的单词,每种类型的数据来自多个令牌(为简单起见,我将这些类型称为1,2和3,并将标记从1添加到20)。对于简单数据集,我只有十个时间点(标记为1-10)和与它们相关的F0值。我想要一个在不同颜色的图形中具有不同类型的单词的图形,但是这些类型中的不同标记都在相同的颜色内。我想象使用aes(),'color'将由word定义,x将是时间,y将是f0值。每当我尝试将数据编码到R中时它会告诉我我正在获取未定义的列。我使用的代码如下所示:
theme_set(theme_bw())
myf0 <- ggplot(ent, aes(x = Time, groups = token, colour = word))
myf0 <- myf0 + geom_line(aes(y = F0), alpha = 0.8)
myf0 <- myf0 + ylab("Hz")
然而,当我去绘制myf0时,它会告诉我:
Error in `[.data.frame`(data, "group") : undefined columns selected
我做错了什么?谢谢!
澄清点: 对不起,我忘了添加一小段数据!这是它的样子:
word token Time F0
1 1 1 1 107.8968
2 1 1 2 113.1362
3 1 1 3 117.2904
4 1 1 4 127.3287
5 1 1 5 132.7554
6 1 1 6 126.4456
7 1 1 7 111.19686
8 1 1 8 93.87390
9 1 1 9 87.12876
10 1 1 10 86.40445
当单词从1到3时,令牌从1到20(每个单词类中有20个令牌,总共60个令牌),每个令牌的时间从1到10,并且有一个F0值对于每一点。
对于这个简单示例,我的数据的简短片段,我通过尝试使ggplot工作得到错误看起来像:
word token Time F0
1 1 1 1 107.89677
2 1 1 2 113.13620
3 1 1 3 117.29039
11 1 2 1 117.0063
12 1 2 2 119.6887
13 1 2 3 116.1143
201 2 1 1 125.25897
202 2 1 2 119.52722
203 2 1 3 115.67006
211 2 2 1 101.54531
212 2 2 2 102.27651
213 2 2 3 100.96099
401 3 1 1 98.82212
402 3 1 2 98.82212
403 3 1 3 97.78813
411 3 2 1 95.15890
412 3 2 2 97.76110
413 3 2 3 100.42595
希望这有帮助!谢谢!
答案 0 :(得分:1)
ent$word <- as.factor(ent$word)
ent$token <- as.factor(ent$token)
ggplot(ent, aes(x = Time, y = F0, group = interaction(word, token), colour = word)) +
geom_line() +
ylab("Hz") +
theme_bw()