ggplot用于多种曲线和数据类型

时间:2013-09-23 06:53:15

标签: r ggplot2

我正在尝试用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

希望这有帮助!谢谢!

1 个答案:

答案 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()

enter image description here