Я пытаюсь построить несколько графиков, используя 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"