【问题标题】:How to plot frequencies of discrete categories?如何绘制离散类别的频率?
【发布时间】:2011-10-11 06:52:08
【问题描述】:

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

    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 轴是其对应的计数,因此线条将显示每个序列中计数的变化。

我该怎么做?我已经搞砸了很多事情,但无法做到!

【问题讨论】:

    标签: r plot ggplot2


    【解决方案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 多个序列要查看时,分面显然变得不那么有用了。

    【讨论】:

    • 男人!我已经完成了你所说的几乎所有事情,但诀窍是将group=Seq 添加到aes 函数中。现在它就像一个魅力,非常感谢!过度绘图对我来说不是问题,因为我有 100 多个序列,所以无法进行刻面。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2019-09-29
    • 2021-03-16
    • 1970-01-01
    • 2011-02-05
    • 2020-12-22
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多