【问题标题】:Changing size of points in R更改 R 中点的大小
【发布时间】:2011-04-16 02:19:26
【问题描述】:

我想使用 R 基础图形制作散点图,但如果需要,我可以使用 ggplot。我有一个包含 x 和 y 坐标的数据框,还有另外两个协变量,称为 a 和 b。我希望每个点的大小随 a 变化(a 的高值 -> 较大的点),每个点的亮度/坚固度随 b 变化(这样那些 b 足够低的点实际上是不可见的)。有人对如何做到这一点有任何建议吗? R 图形的文档似乎很全面,但如此笼统和高级,我几乎不知道从哪里开始。 感谢您的帮助

【问题讨论】:

    标签: r graphics plot


    【解决方案1】:

    下面的示例行显示了如何在绘图中同时使用大小和 alpha

    plot(1:6, sample(6), cex = sample(6)/2, col = rgb(0,0,0, sample(6)/6), pch = 19)
    

    【讨论】:

      【解决方案2】:

      cex 参数是一种快速而肮脏的改变绘图字符大小的方法,但如果你想要一个信息量级等,你确实需要做很多工作。symbols() 是一种方法使用基本图形更准确。

      使用一些虚拟数据,这里有一个使用cex 的绘图和一个使用symbols() 的绘图:

      ## dummy data first
      set.seed(123)
      dat <- data.frame(X = rnorm(10), Y = rnorm(10,2,2), a = runif(10), b = runif(10))
      
      ## plot using cex
      plot(Y ~ X, data = dat, cex = 10 * a)
      
      ## plot using symbols()
      with(dat, symbols(X, Y, circles = a))
      

      您可以使用cex 示例中的col 参数或在符号情况下使用fg 参数为点着色。诀窍将是获得适当的规模。在我们的虚拟数据中,b 在区间 (0,1] 上,因此我们的比例可能是将其分为 5 个类别并使用五种绘图颜色之一。

      ## Eg using heat.colors(5)
      cut.pts <- seq(0, 1, by = 0.1)
      cuts <- with(dat, cut(b, cut.pts))
      with(dat, symbols(X, Y, circles = a, bg = heat.colors(5)[cuts]))
      

      如您所见,选择合适的颜色很重要,尽管在这里,一种颜色与背景相同。

      使用 ggplot2 执行此操作可能会简单得多,因为 Hadley Wickham 已经为您完成了所有繁重的工作。

      ## Eg using ggplot
      require(ggplot2)
      p <- ggplot(dat, aes(X, Y, colour = b, size = a))
      p + geom_point()
      

      HTH

      【讨论】:

        【解决方案3】:

        这经常出现在 R 帮助中,例如 here。基本上,cex 将是更改点大小的有趣参数。为了改变点的颜色,我建议设置col=heat.colors() 或制作自己的颜色列表并在绘图前定义为一个因素。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-04-17
          • 2019-01-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多