【问题标题】:Plotting three densities on the same graph in different line patterns with titles etc在具有标题等的不同线型中在同一图表上绘制三个密度
【发布时间】:2013-05-30 06:50:21
【问题描述】:

我对 R 非常非常陌生,所以请原谅我的问题的基本性质。简而言之,我做了很多谷歌搜索来试图回答这个问题,但我发现即使是可用的基本指南和论坛上的简单讨论也比我拥有更多的先验知识,特别是在概述所有内容时编码术语是什么以及更改它们对情节意味着什么。

简而言之,我有一个选项卡格式的表格,其中包含三列数据,我希望在单个图表上绘制密度。我希望线条是不同的图案(点线、虚线等。任何可以很容易区分它们的方式,我不能使用颜色,因为我的主管是色盲)。

我的代码可以读取数据并使我感兴趣的列可以访问:

mydata <- read.table("c:/Users/Demon/Desktop/Thesis/Fst_all_genome.txt", header=TRUE,
sep="\t")

fstdata <- data.frame(Fst_ceu_mkk =rnorm(10),
                      Fst_ceu_yri =rnorm(10),
                      Fst_mkk_yri =rnorm(10))

我该去哪里?

【问题讨论】:

    标签: r kernel-density density-plot


    【解决方案1】:

    Appendix A of 'An Introduction to R' 有一个很好的演练教程,你可以在十分钟内完成;除其他外,它还教授有关线型等的知识

    在那之后,绘图密度在这里也被解释了几十次;在上面的搜索框中搜索“[r] 密度”。还有R Graph Gallery(现在可能已经关闭)等等。

    我经常推荐的一个不错的免费指南是 John Verzani 的 simpleR,它非常强调图表,并会在这里教您需要什么。

    【讨论】:

    • 谢谢德克。我会看看。压力大的东西!我的时间预算非常紧张(我的论文只给了六个月的时间),而且 R 的学习曲线非常陡峭。希望有人会为它设计一个更用户友好的 GUI。
    • @user2439887 还有以ggplot为中心的cookbook for R——你也可以在RColorBrewer包中获得colorblind-safe colour palettes
    • 我不想在这方面听起来很懒惰,但尽管 simpleR 指南看起来是一个相当全面的工具,但在模板方面确实有点绕圈子。理想情况下,我在第二天左右需要这些图,所以我真的只需要一个快速而肮脏的解决方案,但用足够简单的术语解释,我可以应用它并知道哪些变量要更改或不理会。如果有人可以提供一个模板,我可以将数据向量切换到其中,并简要说明如何改变情节的视觉方面,我将不胜感激。
    • 感谢 mnel - 这非常有用。
    • 请注意,我的回答并未建议使用 gpplot 或 ggplot2。你也处于滥用这个网站的边缘,因为你的 vioplot 问题本质上是相同的。
    【解决方案2】:

    两个选项供您使用高级图形进行探索。

    # dummy data
    d = data.frame(x = rnorm(10), y = rnorm(10), z = rnorm(10))
    

    您首先需要将数据从宽格式重塑为长格式,

    require(reshape2)
    m = melt(d)
    

    ggplot2 图形

    require(ggplot2)
    ggplot(data = m, mapping = aes(x = value, linetype = variable)) + 
            geom_line(stat = "density")
    

    格子图形

    使用相同的melt()ed数据,

    require(lattice)
    densityplot( ~ value, data = m, group = variable, 
                auto.key = TRUE, par.settings = col.whitebg())
    

    【讨论】:

      【解决方案3】:

      如果你需要一些非常简单的东西,你可以这样做:

      plot(density(mydata$col_1))
      lines(density(mydata$col_2), lty = 2)
      lines(density(mydata$col_2), lty = 3)
      

      如果第二条和第三条密度曲线远离第一条,您需要明确定义绘图区域的 xy 限制:

      dens1 <- density(mydata$col_1)
      dens2 <- density(mydata$col_2)
      dens3 <- density(mydata$col_3)
      
      plot(dens1, xlim = range(dens1$x, dens2$x, dens3$x),
        ylim = range(dens1$y, dens2$y, dens3$y))
      lines(density(mydata$col_2), lty = 2)
      lines(density(mydata$col_2), lty = 3)
      

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-13
        • 1970-01-01
        相关资源
        最近更新 更多