r-如何将颜色和线型的传说结合到ggplot中的单个传说中



我很难制作一个组合的传奇,以显示结合了线型和颜色尺度的图的所有四个选项。我已经查看了这个答案,但是,正如您在运行绘图代码时会发现的那样,这似乎不起作用 - 我将分类正确,但不能使传说打印的所有四个元素。我在做什么错?

谢谢!

structure(list(Ocean.Regions = c("South Pacific", "South Pacific", 
"South Pacific", "South Pacific", "South Pacific", "South Pacific", 
"South Pacific", "South Pacific", "South Pacific", "South Pacific", 
"South Pacific", "South Pacific", "South Pacific", "South Pacific", 
"South Pacific", "South Pacific", "South Pacific", "South Pacific", 
"South Pacific", "South Pacific", "South Pacific", "South Pacific", 
"South Pacific", "South Pacific", "South Pacific", "South Pacific", 
"South Pacific", "South Pacific", "South Pacific", "South Pacific", 
"South Pacific", "South Pacific", "South Pacific", "South Pacific", 
"South Pacific", "South Pacific", "South Pacific", "South Pacific", 
"South Pacific", "South Pacific", "South Pacific", "South Pacific", 
"South Pacific", "South Pacific"), binned_alt = c(0, 0, 1000, 
1000, 2000, 2000, 3000, 3000, 4000, 4000, 5000, 5000, 6000, 6000, 
7000, 7000, 8000, 8000, 9000, 9000, 10000, 10000, 11000, 11000, 
12000, 0, 0, 1000, 1000, 2000, 3000, 4000, 4000, 5000, 7000, 
8000, 8000, 9000, 9000, 10000, 10000, 11000, 11000, 12000), Meteorological_Season_Factor = structure(c(1L, 
3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 
1L, 3L, 1L, 3L, 1L, 1L, 3L, 3L, 1L, 3L, 3L, 1L, 3L, 1L, 3L, 1L, 
1L, 1L, 1L, 3L, 3L, 1L, 3L, 1L, 1L, 3L, 3L), .Label = c("Winter", 
"Fall", "Summer", "Spring"), class = "factor"), Species = c("MEK", 
"MEK", "MEK", "MEK", "MEK", "MEK", "MEK", "MEK", "MEK", "MEK", 
"MEK", "MEK", "MEK", "MEK", "MEK", "MEK", "MEK", "MEK", "MEK", 
"MEK", "MEK", "MEK", "MEK", "MEK", "MEK", "MEK", "MEK", "MEK", 
"MEK", "MEK", "MEK", "MEK", "MEK", "MEK", "MEK", "MEK", "MEK", 
"MEK", "MEK", "MEK", "MEK", "MEK", "MEK", "MEK"), `25%` = c(10.25, 
23.95, 6.775, 12.45, 4.65, 5.675, 3.3, 5.5, 4.5, 5.275, 4.6, 
0.348456848923605, 4.35, 0.524861878453039, 3.475, 0.289655172413793, 
0.376811594202899, 0.289655172413793, 0.688259109311741, 0.524861878453039, 
4.15, 0.524861878453039, 0.524861878453039, 0.688259109311741, 
0.688259109311741, 13.4, 22.7, 12.45, 5.92241379310345, 5.4, 
1.84364640883978, 5.2, 2.61724137931034, 5.9, 0.289655172413793, 
0.289655172413793, 0.376811594202899, 11.1, 0.524861878453039, 
10.1, 0.524861878453039, 0.524861878453039, 0.688259109311741, 
0.688259109311741), `50%` = c(13.4, 28.45, 10.7, 17, 8.4, 9.85, 
5.9, 7.25, 5.9, 5.65, 7.15, 1.01243093922652, 6, 0.524861878453039, 
4.75, 0.524861878453039, 2.8, 0.289655172413793, 3.5, 0.524861878453039, 
7.5, 0.524861878453039, 0.524861878453039, 0.688259109311741, 
0.688259109311741, 14.2, 28.4, 17, 10.75, 6.5, 3.16243093922652, 
5.2, 4.9448275862069, 5.9, 0.289655172413793, 0.289655172413793, 
0.376811594202899, 11.1, 0.524861878453039, 10.3, 0.524861878453039, 
0.524861878453039, 0.688259109311741, 0.688259109311741), `75%` = c(16, 
33.9, 17.85, 19.1, 10.15, 16.2, 12.325, 10.3, 9.05, 7.175, 7.425, 
3.775, 7.6, 0.524861878453039, 5.875, 0.524861878453039, 5, 0.524861878453039, 
9, 0.524861878453039, 9.675, 1.31864640883978, 0.524861878453039, 
1.69412955465587, 0.688259109311741, 14.5, 34.2, 19.1, 16.15, 
13.2, 4.48121546961326, 5.2, 7.27241379310345, 5.9, 0.289655172413793, 
0.407258525433416, 0.376811594202899, 11.1, 0.524861878453039, 
10.5, 2.11243093922652, 0.524861878453039, 0.688259109311741, 
0.688259109311741), Treatment = structure(c(2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Clean Marine", "All Data"
), class = "factor")), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -44L))

这是情节代码

library(ggplot2)
library(tidyverse)
library(ggthemes)
SOtestplot <- test %>%
  filter(Species == "MEK", binned_alt <= 8000) %>%
  ggplot(aes(y = binned_alt/1000, x = `50%`, col = Meteorological_Season_Factor, linetype = Treatment)) +
  geom_path(size = 1.2) + 
  theme_tufte(base_size = 22) +
  geom_errorbarh(aes(xmin =`25%`, xmax = `75%`), height = 0) + 
  theme(axis.title.x = element_text(vjust=-0.5),
        axis.title.y = element_text(vjust=1.5),
        panel.grid.major = element_line(colour = "grey80"),
        axis.line = element_line(size = 0.5, colour = "black")) +
  scale_color_manual(name = "Treatment & Season",
                     values = c("cornflowerblue", "goldenrod3", "cornflowerblue", "goldenrod3"),
                     labels = c("Summer Clean Marine",
                                "Winter Clean Marine",
                                "Summer All Data",
                                "Winter All Data")) +
  scale_linetype_manual(name = "Treatment & Season",
                        values = c( "solid", "dashed", "solid", "dashed"),
                        labels = c("Summer Clean Marine",
                                   "Winter Clean Marine",
                                   "Summer All Data",
                                   "Winter All Data")) +
  xlab("MEK (ppt)") +
  ylab("Altitude (km)")

尝试一下。制作您使用的两个字段(mutate(hybrid = paste(Meteorological_Season_Factor, Treatment))(,然后将其用于颜色和行类型(aes(...col = hybrid, linetype = hybrid)(,然后在两个scale函数中使用命名的向量。

那是您想要的吗?(P.S.我相信我使用了您在使用它们的顺序中使用的标签和值...也许这是唯一的问题是您将其中几个转移了!(

SOtestplot <- test %>%
  mutate(hybrid = paste(Meteorological_Season_Factor, Treatment)) %>% 
  filter(Species == "MEK", binned_alt <= 8000) %>%
  ggplot(aes(y = binned_alt/1000, x = `50%`, col = hybrid, linetype = hybrid)) +
  geom_path(size = 1.2) + 
  theme_tufte(base_size = 22) +
  geom_errorbarh(aes(xmin =`25%`, xmax = `75%`), height = 0) + 
  theme(axis.title.x = element_text(vjust=-0.5),
        axis.title.y = element_text(vjust=1.5),
        panel.grid.major = element_line(colour = "grey80"),
        axis.line = element_line(size = 0.5, colour = "black")) +
  scale_color_manual(name = "Treatment & Season",
                     values = c(
                       `Summer Clean Marine` = "cornflowerblue",
                       `Winter Clean Marine` = "goldenrod3",
                       `Summer All Data` = "cornflowerblue",
                       `Winter All Data` = "goldenrod3"
                     )) +
  scale_linetype_manual(name = "Treatment & Season",
                        values = c(
                          `Summer Clean Marine` = "solid",
                          `Winter Clean Marine` = "dashed",
                          `Summer All Data` = "solid",
                          `Winter All Data` = "dashed")
                        ) +
  xlab("MEK (ppt)") +
  ylab("Altitude (km)")

最新更新