Как исключить легенду для определенного графика с несколькими графиками, используя scale_color_manual в ggplot2? - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь построить несколько графиков, используя ggplot2 в R.

Я хотел бы установить ручную цветовую палитру и исключить geom_line и geom_point с data_1 в scale_color_manual. Есть ли способ, которым я могу это сделать?

#named set of colors
color_set <- random_color_generator(interaction(x$col1, x$col2))

p <- ggplot() + 
  geom_line(data = data_1, mapping = aes(x= period, y = value, group = interaction(col1, col2)), size = 0.5, show.legend = F) +
  geom_point(data = data_1, mapping = aes(x= period, y = value, group = interaction(col1, col2)), size = 2, shape = 1, stroke = 0.2, , show.legend = F) +
  geom_line(x, mapping = aes(x = period, y = value, color = col1), size = 1.3) +
  geom_ribbon(data = x_ribbon, mapping = aes(x= period, ymin = ymin, ymax = ymax), color = "dimgray", alpha = 0.2) + 
  scale_color_manual(values = color_set)

Когда я использую приведенный выше код, я получаю предупреждение ниже, и каждая строка на графике становится черной.

Warning message:
Removed 64 rows containing missing values (geom_path). 

Я перепробовал все параметры, доступные в scale_color_manual (), такие как na.translate, na.values ​​и drop, но ничего не помогло. Пожалуйста, помогите.

Заранее спасибо!

Редактировать 1: Добавление структуры данных data_1 и x

#x
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   64 obs. of  7 variables:
 $ col1    : Factor w/ 1 level "model1": 1 1 1 1 1 1 1 1 1 1 ...
 $ col2    : Factor w/ 4 levels "scenario1",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ region  : Factor w/ 1 level "world": 1 1 1 1 1 1 1 1 1 1 ...
 $ variable: Factor w/ 1 level "var_1": 1 1 1 1 1 1 1 1 1 1 ...
 $ unit    : Factor w/ 1 level "billion Rs/yr": 1 1 1 1 1 1 1 1 1 1 ...
 $ period  : int  2005 2010 2015 2020 2025 2030 2035 2040 2045 2050 ...
 $ value   : num  5 10 13 17 20 ...

#data_1
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   1114 obs. of  7 variables:
 $ col1    : Factor w/ 25 levels "model_x","model_y",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ col2    : Factor w/ 177 levels "scenario1","scenario2",..: 4 4 4 4 4 4 4 4 4 4 ...
 $ region  : Factor w/ 1 levels "world",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ variable: Factor w/ 1 levels "var_1",..: 1 1 1 1 1 1 1 1 1 1 1 1 ...
 $ unit    : Factor w/ 1 levels "billion Rs/yr",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ period  : int  2005 2010 2015 2020 2025 2030 2035 2040 2045 2050 ...
 $ value   : num  6 10 11 15 23 ...

x_ribbon вычисляется, как показано ниже.

x_ribbon <- x %>% select(period, value) %>%
              group_by(period) %>%
              summarise(ymin = min(value), ymax = max(value))

color_set является именованным вектором, как показано ниже

model1.scenario1             model1.scenario2             model1.scenario3             model1.scenario4 
    "#E41A1C"                    "#377EB8"                    "#4DAF4A"                    "#984EA3"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...