ggplot2 - 就两个“大小”变量而言的 geom_point

Nic*_*abo 5 r ggplot2

是否有任何选项可以sizeggplot函数的参数中使用两个变量?例如

ggplot(mtcars, aes(qsec,drat, size = cyl))+
   geom_point()
Run Code Online (Sandbox Code Playgroud)

显然它有效,点的大小取决于cyl变量。但是是否可以选择添加另一个size可以使用alpha选项的变量,例如variable = mpg. 怎么做?

我在 Ilustrator 中仅以三个点为例。 在此处输入图片说明

谢谢,

更新

感谢@lukeA 以下代码行有效:

ggplot() + 
    geom_point(data = mtcars, aes(qsec,drat, size = cyl)) + 
    geom_point(data = mtcars, aes(qsec,drat, size = mpg), alpha = .1, colour = "red")
Run Code Online (Sandbox Code Playgroud)

但是当我想单独设置每个变量的大小时,这是不可能的。当size我通常使用一个变量scale_size_contiunous但有两个size变量时它不起作用。我知道使用scale_size_continuous两次不会改变任何东西。也许根本不可能,但也许有人找到了解决方案。

che*_*123 0

您现在可以使用ggnewscale- 让您拥有多个适合任何审美的比例。尺度也可以单独定义。这是一个例子:

library(ggplot2)
library(ggnewscale)

ggplot(mtcars, aes(x=qsec, y=drat)) + theme_bw() +
  geom_point(aes(size=cyl), color='gray20') +
  scale_size_continuous(range=c(0.2, 3)) +

  new_scale("size") +

  geom_point(aes(size=mpg), alpha=0.1, color='red') +
  scale_size_continuous(range=c(5, 10))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

您可以单独定义每个比例的范围。在这种情况下,这一点很重要,这样您就可以确保映射到的尺寸范围mpg大于映射到 的尺寸范围cyl。否则,两者都会映射到默认范围 ( c(1,6)),这意味着许多点不会有可见的红点。