R语言 无法使图形颜色/图例与双Y轴一起工作?

b4wnujal  于 2023-01-10  发布在  其他
关注(0)|答案(2)|浏览(92)

这段代码为BrentSpot生成了一条黑线,为CPI生成了一条红线。当我在图表中添加更多的线/变量时,没有一条颜色匹配。

ggplot(modified) +
  geom_line(aes(Month, BrentSpot)) +
  geom_line(aes(Month, CPI, colour = 'green')) +
  theme_minimal() +
  scale_y_continuous(
    "Brent Spot Price", 
    sec.axis = sec_axis(~ . * 1.1, name = "CPI")
  )
wj8zmpe1

wj8zmpe11#

我创建了一个示例数据集:

modified <- data.frame(Month = c(1, 2, 3, 4, 5, 6),
                       BrentSpot = c(1, 3, 2, 4, 5, 2),
                       CPI = c(2, 4, 3, 1, 5, 6))

输出:

Month BrentSpot CPI
1     1         1   2
2     2         3   4
3     3         2   3
4     4         4   1
5     5         5   5
6     6         2   6

可以向scale_color_manual添加颜色。可以使用以下代码:

ggplot(modified) +
  geom_line(aes(Month, BrentSpot, colour = "Brent")) +
  geom_line(aes(Month, CPI, colour = "CPI")) +
  theme_minimal() +
  scale_y_continuous(
    "Brent Spot Price", 
    sec.axis = sec_axis(~ . * 1.1, name = "CPI")
  ) +
  scale_color_manual(values=c("#CC6666", "#9999CC"))

输出:

eqfvzcg8

eqfvzcg82#

看起来您的数据是长格式的,价格变量被拆分到多个列(BrentSpotCPI)。
在这种情况下,如果您需要图例,则需要在aes中为每一行指定颜色 * Map *。
我已经创建了一个数据集(见下文),希望它在名称和列类型方面与您的数据集相匹配,以便演示:

library(ggplot2)

ggplot(modified) +
  geom_line(aes(Month, BrentSpot, colour = "Brent")) +
  geom_line(aes(Month, CPI, colour = 'CPI')) +
  theme_minimal() +
  scale_color_manual(values = c("red4", "green4")) +
  scale_y_continuous(
    "Brent Spot Price", 
    sec.axis = sec_axis(~ . * 1.1, name = "CPI")
  )

数据

set.seed(1)

modified <- data.frame(Month     = seq(as.Date("2020-01-01"), 
                                       as.Date("2021-12-01"),
                                       by = "month"),
                       BrentSpot = cumsum(rnorm(24)) + 100,
                       CPI       = cumsum(rnorm(24)) + 100)

相关问题