ggplot scatterplot指向没有填充的点

Dav*_* J. 11 r ggplot2

我想制作一个散点图,其点没有填充(或等效,透明填充).

# generate some random data for the scatterplot
n <- 5
f <- factor(1:n)
df <- expand.grid(f1 = f, f2 = f)
df <- transform(df, v1 = round(10 * runif(n ** 2)))

# plot the scatterplot
ggplot(df) + geom_point(aes(x = f1, y = f2, size = v1, fill = NA))
Run Code Online (Sandbox Code Playgroud)

设置fillNA似乎是合乎逻辑,但没有奏效.我也试着NULL""无济于事.

Tyl*_*ker 20

我想你想玩形状但可能是错的:

ggplot(df) + geom_point(aes(x = f1, y = f2, size = v1), shape=1)
Run Code Online (Sandbox Code Playgroud)

或者可能...

ggplot(df) + geom_point(aes(x = f1, y = f2, size = v1), fill="green", shape=21)
Run Code Online (Sandbox Code Playgroud)

如果你想填充颜色.

  • 是的,它确实.我只是分享,以供将来参考,`fill = NA`没有语法错误; 它确实删除任何填充颜色.仍然,它对`shape = 19`默认(固体圆盘)没有影响,因为"填充"已经是形状本身的一部分.术语令人困惑,但不是你的错! (6认同)
  • 谢谢!我读了ggplot2源代码; `fill = NA`是删除填充的正确方法.但是,由于默认形状是实心圆盘,因此无法看到填充(或缺少填充). (3认同)

小智 7

在 ggplot (ggplot2_3.0.0) 的更高版本中,您可以使用任何形状执行以下操作:

    ggplot(df) +
      geom_point(aes(x = f1, y = f2, size = v1)) +
      scale_shape(solid = FALSE)
Run Code Online (Sandbox Code Playgroud)

  • 这似乎有点不可靠,因为它似乎只有在设置“geom”的“shape”变量时才起作用,而不是如果您想对带有空白“geom_point”的所有点使用相同的形状。另一方面,如果您有兴趣对数据中的组使用不同的形状,这似乎是唯一可行的解​​决方案。 (2认同)