如何为各个方面的文本定义手动颜色?

时间:2019-05-31 22:37:22

标签: r ggplot2

尝试为ggplot创建的各个构面上的文本定义手动颜色。但是代码分配了随机的颜色。

我已经包含了我尝试获得正确颜色的代码。


library(ggplot2)

p <- ggplot(mtcars, aes(mpg, wt)) +
  geom_point() +
  facet_grid(. ~ cyl) +
  theme(panel.spacing = unit(1, "lines"))

dat_text <- data.frame(
  label = c("4 cylinders", "6 cylinders", "8 cylinders"),
  cyl   = c(4, 6, 8),
  cl = c("red", "blue", "black"),
  x     = c(20, 27.5, 25),
  y     = c(4, 4, 4.5)
)

p + geom_text(
  data    = dat_text,
  mapping = aes(x = x, y = y, label = label, colour= cl)
)

该代码正常工作,只是它提供随机颜色而不是指定的颜色。

2 个答案:

答案 0 :(得分:4)

使用scale_color_manual手动设置颜色:

dat_text <- data.frame(
  label = c("4 cylinders", "6 cylinders", "8 cylinders"),
  cyl   = c(4, 6, 8),
  cl = c("A", "B", "C"),
  x     = c(20, 27.5, 25),
  y     = c(4, 4, 4.5)
)

p + geom_text(
  data    = dat_text,
  mapping = aes(x = x, y = y, label = label, colour= cl)
) + 
  scale_color_manual(values = c("red","blue","black"))

enter image description here

请注意,顺序是级别的字母顺序,这就是为什么我将级别设置为A,B,C。

您可能不需要文字说明,因此将其删除:

p + geom_text(
  data    = dat_text,
  mapping = aes(x = x, y = y, label = label, colour= cl), show.legend = FALSE
) + 
  scale_color_manual(values = c("red","blue","black"))

答案 1 :(得分:0)

或者,您可以将它们全部绘制在同一图上,而只需更改点的颜色即可。

ggplot(data=mtcars) +
  geom_point(data = mt, aes(x = mpg, y = wt, color = factor(mt$cyl))) +
  scale_color_manual(values=c("red", "blue", "black")) +
  labs(color = "# of cylinders:")

enter image description here