如何绘制离散类别的频率?

时间:2011-10-10 22:17:13

标签: r plot ggplot2

您好我有一个如下所示的数据框:

    Seq     H   E   T   C
1   Seq_1   2   1   5   4
2   Seq_2   2   1   5   4
3   Seq_3   2   1   5   4
4   Seq_4   0   0   6   6
5   Seq_5   0   4   2   6    

其中H,E,T和C代表每个序列中这些特征的计数。

我正在尝试构建一个线图,其中每一行应代表一个序列。 X轴将是特征(H,E,T,C)和Y轴的相应计数,因此这些线将显示每个序列中计数的变化。

我该怎么做?我已经搞砸了很多东西但是无法做到!

1 个答案:

答案 0 :(得分:1)

ggplot的技巧是它希望数据采用“长”格式。使用melt以这种格式获取它通常是最容易的。一旦融化,就可以根据需要查看绘图。这是一个例子:

txt <- "    Seq     H   E   T   C
1   Seq_1   2   1   5   4
2   Seq_2   2   1   5   4
3   Seq_3   2   1   5   4
4   Seq_4   0   0   6   6
5   Seq_5   0   4   2   6 "

dat <- read.table(textConnection(txt), header = TRUE)
library(ggplot2)

dat.m <- melt(dat)


ggplot(dat.m, aes(variable, value, group = Seq, colour = Seq)) + 
  geom_line()

这会导致Seq_1 - Seq_3出现一些过度绘图问题,因此您可能需要考虑丢弃颜色和刻面:

ggplot(dat.m, aes(variable, value, group = Seq)) + 
  geom_line() + 
  facet_wrap(~Seq)

当您需要检查100个序列时,分面显然变得不那么有用了。

enter image description here