R:使用scale_fill_manual更改ggplot填充颜色的问题

时间:2017-03-17 21:05:32

标签: r ggplot2

按照Cookbook for R(http://www.cookbook-r.com/Graphs/Legends_(ggplot2)),我试图使用scale_fill_manual更改ggplot中绘图中点和线的图例和颜色,但它似乎没有工作 - geom_points保持黑色,geom_smooths保持蓝色。这是可重现的代码:

import spark.implicits._
val foo = spark.read.json(inPath).as[MyCaseClass]

我试图将点和线标记为"标准"出现深蓝色,"非标准"点和线显示深紫色," Oddball"点和线显示深红色,但点都显示为黑色,线条都显示为蓝色:

https://i.stack.imgur.com/IylCg.jpg

任何人都有修复?提前谢谢!

1 个答案:

答案 0 :(得分:3)

通常,我建议在绘图之前重新映射变量,因为它可以使代码更容易(并且意味着您可以先检查数据中的值):

df$type <- factor(df$type, levels = 0:2,
                  labels = c("Oddball", "Nonstandard", "Standard"))

test.plot <- ggplot(df, aes(y = votes, x = time, colour = type)) +
  geom_point() +
  geom_smooth(lwd = 0.75, lty = "dashed", se = FALSE, method = lm) +
  scale_colour_manual(values=c("Standard" = "blue4", "Nonstandard" = "purple4",
    "Oddball" = "red4"), name="Type")

然而,否则,您只需将审美更改为colour而不是fill

test.plot <- ggplot(df, aes(y = votes, x = time, colour = type)) +
  geom_point() +
  geom_smooth(lwd = 0.75, lty = "dashed", se = FALSE, method = lm) +
  scale_colour_manual(values=c("blue4", "purple4", "red4"),
                    breaks=c("2","1","0"),
                    labels=c("Standard", "Nonstandard", "Oddball"),
                    name="Type")

Plot

注意行和点使用colour而不是fill,您只需要scale_x_manual的命名向量参数。

如果您的关卡语法不是name,那么您需要用双引号括起来(例如"Non-standard")。

另请参阅manual