代码之家  ›  专栏  ›  技术社区  ›  Henrik

如何避免使用基图过度绘制(点)?

  •  14
  • Henrik  · 技术社区  · 15 年前

    在讨论stats.stackoverflow之后,我正在完成一篇论文的图表,并决定(

    然而,还有一个问题仍然存在,那就是图谋过度。例如,标记的点看起来像是反映了一个数据点,但实际上在该位置存在5个具有相同值的数据点。
    因此,我想知道是否有一种方法可以处理 基础图中的过度绘图。 using points. as the function.
    如果各个点变暗、变厚或……

    手动操作不是一个选项(这样的图形和点太多)。此外, ggplot2 is also not what I want to learn to deal with this single problem(one reason is I treed to like dual axes what is not suppted in ggplot2 )。


    update: i written a function which automatically creates the above graphs and available overplotting by adding vertical or horizontal jitter(or both): check it out!

    此功能现在可用作 raw.means.plot and raw.means.plot2 in the plotrix >a>package(on cran)。 after a discussion on stats.stackoverflow ,为了传输尽可能多的信息,创建以下图形,在前景和背景中显示原始数据: alt text

    然而,还有一个问题仍然存在,那就是图谋过度。例如,标记的点看起来像是反映了一个数据点,但实际上在该位置存在5个具有相同值的数据点。
    因此,我想知道是否有办法处理过度策划 base graph 使用 points 作为功能。
    如果各个点变暗、变厚或……

    手动操作不是一个选项(这样的图形和点太多)。此外, ggplot2 我也不想学着去处理这个单一的问题(一个原因是我喜欢双轴,这是不受支持的 GGPROTT2 )


    更新: 我编写了一个函数,它自动创建上面的图形,并通过添加垂直或水平抖动(或两者)来避免过度绘制: check it out!

    此功能现在可用为 raw.means.plot raw.means.plot2 plotrix 包装(在起重机上)。

    4 回复  |  直到 13 年前
        1
  •  14
  •   Joris Meys    15 年前

    标准的方法是在绘图前给数据添加一些噪声。r有一个函数jitter(),它正好做到了这一点。你可以用它把必要的噪声添加到你的坐标图中。如:

    X <- rep(1:10,10)
    Z <- as.factor(sample(letters[1:10],100,replace=T))
    
    plot(jitter(as.numeric(Z),factor=0.2),X,xaxt="n")
    axis(1,at=1:10,labels=levels(Z))
    
        2
  •  8
  •   Community Mohan Dere    9 年前

    除了抖动之外,另一个好方法是阿尔法混合,您可以(在支持它的图形设备上)获得它作为第四个颜色参数。我提供了一个例子来“过度绘制”两个柱状图 this SO question .

        3
  •  4
  •   Greg Snow    15 年前

    对于显示点数的一般问题,另一个想法是使用地毯图(地毯函数),这会沿着边缘放置小的勾号,以显示贡献的点数(仍然使用抖动或阿尔法混合表示领带)。这允许实际点显示其真实值而不是抖动值,但是地毯可以指示绘图的哪些部分具有更多值。

    对于这个例子,直接抖动或阿尔法混合可能是最好的,但在其他一些情况下,地毯图可能是有用的。

        4
  •  3
  •   mbq    15 年前

    您也可以使用 sunflowerplot 但是在这里很难实现。我会使用阿尔法混合,正如德克建议的。

    推荐文章