首页 > 解决方案 > scale_colour_manual 中的手动颜色未正确渲染

问题描述

无法弄清楚为什么手动颜色无法正确渲染。任何提示!!

library(tidyverse)

tb1 <- 
  tibble(
    X = seq(1:50)
  , A = rnorm(n = 50, mean = 100, sd = 8)
  , B = rnorm(n = 50, mean = 150, sd = 6)
  , C = rnorm(n = 50, mean = 175, sd = 5)
  , D = rnorm(n = 50, mean = 200, sd = 5)
  )

tb1

Plot1 <- 
  ggplot(tb1, aes(x = X)) +
  geom_point(aes(y = A, colour = "orange")) +
  geom_line(aes(y = B, colour = "black")) +
  geom_line(aes(y = C, colour = "green")) +
  geom_line(aes(y = D, colour = "red")) +
  scale_colour_manual(
      name   = ''
    , values = c("orange" = "orange", "black" = "black", "green" = "green", "red" = "red")
    , labels = c("Obs", "Fit1", "Fit2", "Fit3")
  )

Plot1

在此处输入图像描述

标签: rggplot2

解决方案


如果您不添加标签,您会看到它们按字母顺序排列:

ggplot(tb1, aes(x = X)) +
  geom_point(aes(y = A, colour = "orange")) +
  geom_line(aes(y = B, colour = "black")) +
  geom_line(aes(y = C, colour = "green")) +
  geom_line(aes(y = D, colour = "red")) +
  scale_colour_manual(
      name   = ''
    , values = c("orange" = "orange", "black" = "black", "green" = "green", "red" = "red")

在此处输入图像描述

所以你需要使用休息来安排订单:

ggplot(tb1, aes(x = X)) +
  geom_point(aes(y = A, colour = "orange")) +
  geom_line(aes(y = B, colour = "black")) +
  geom_line(aes(y = C, colour = "green")) +
  geom_line(aes(y = D, colour = "red")) +
  scale_colour_manual(
      name   = ''
    , values = c("orange" = "orange", "black" = "black", "green" = "green", "red" = "red"),
      breaks = c("orange","black","green","red"),
    , labels = c("Obs", "Fit1", "Fit2", "Fit3")
  )

在此处输入图像描述


推荐阅读