fill和scale_fill_discrete / plot legend

时间:2017-02-08 00:50:39

标签: r plot ggplot2

我正在修补geom_point尝试绘制以下代码。我已经将汽车$ vs转换为具有离散水平的因子,这样我就可以通过将其分配给ggplot aes设置中的“填充”来可视化不同颜色的变量的两个级别。

cars <- mtcars
cars$vs <- as.factor(cars$vs)

ggplot(cars,aes(x = mpg, y = disp, fill = vs)) +
  geom_point(size = 4) +
  scale_fill_discrete(name = "Test")

The result is this:

如您所见,图表不会通过颜色区分两种“填充”条件。但是,它会保留我在scale_fill_discrete中指定的图例标签。

或者,我可以绘制以下内容(相同的代码,但不是“填充”,使用“颜色”)

cars <- mtcars
cars$vs <- as.factor(cars$vs)

ggplot(cars,aes(x = mpg, y = disp, color = vs)) +
  geom_point(size = 4) +
  scale_fill_discrete(name = "Test")

enter image description here

正如您所看到的,使用“颜色”代替“填充”可以通过颜色区分因子的级别,但似乎使用scale_fill_discrete覆盖我对图例标题所做的任何更改。

我是否正确使用“填充”?如何使用此方法绘制不同颜色的不同级别的因子可以控制绘图图例与scale_fill_discrete?

2 个答案:

答案 0 :(得分:4)

由于您使用color作为映射,因此您可以使用scale_color_*更改相应的属性,而不是scale_fill_*

ggplot(cars,aes(x = mpg, y = disp, color = vs)) +
      geom_point(size = 4) +
      scale_color_discrete(name = "Test") 

enter image description here

答案 1 :(得分:2)

要将fillgeom_point一起使用,您应该使用可填充的形状:

ggplot(cars,aes(x = mpg, y = disp, fill = vs)) +
  geom_point(size = 4, shape = 21) +
  scale_fill_discrete(name = "Test")

请参阅?pch,其中显示形状21至25可以着色并填充不同的颜色。ggplot将不会使用fill,除非形状是可填充的形状。这种行为在不同版本中有所改变,如the NEWS file中所示。

除非您希望点的轮廓和填充颜色不同,否则没有理由将fillgeom_point一起使用,因此推荐color的其他答案可能就是您想要的。