Без воспроизводимого примера трудно быть в состоянии помочь вам. Лучшей практикой будет объединение трех данных и создание категориальной переменной для их разделения.
Однако, если вы хотите изменить заголовок и метки легенды, вы можете использовать scale_color_manual
(вам придется использовать scale_fill_manual
, только если вы передали аргумент, используя fill =
в aes
, здесь, когда вы используете color
, необходимо scale_color_manual
):
ggplot(data = dataS24, aes(x = NominalKM, y = MassDefectrounded)) +
geom_point(shape = 16, alpha = 0.7, aes(color = "#00A5FF")) +
geom_point(data = dataS02, shape = 16, alpha = 0.7, aes(color = "#00BC59"))+
geom_point(data = dataS15, shape = 16, alpha = 0.7, aes(color = "#FC717F"))+
guides(shape = guide_legend(order = 1))+
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black"),
axis.text = element_text(size = 11, face = "bold"),
axis.title = element_text(size=13, face="bold"),
aspect.ratio = 1,
)+
scale_color_manual(name = "Date", values = c("#00A5FF" = "0724", "#00BC59" = "0802", "#FC717F" = "0815"))
Если это не работает, рассмотрите небольшой воспроизводимый пример трех ваших информационных фреймов (прочитайте эту ссылку : Как создать великолепный воспроизводимый пример R )
Примечание: я не уверен, что эта часть действительно важна для вашего сюжета: guides(shape = guide_legend(order = 1))+...
, так как все фигуры равны 16 и не установлены в aes
. Но я, возможно, ошибаюсь (я не могу проверить это без примера ваших данных).
РЕДАКТИРОВАТЬ: Объединение трех кадров данных
Предполагая, что все ваши фреймы данных имеют тот же формат, что и тот, который вы предоставили в качестве примера, здесь я генерирую три случайных фрейма данных, которые имитируют вашу структуру:
data0724 = data.frame(Molecular = LETTERS[1:5],
Nominal = sample(100:750,5),
Mass = rnorm(5, mean = 1, sd = 1))
data0802 = data.frame(Molecular = LETTERS[6:10],
Nominal = sample(100:750,5),
Mass = rnorm(5, mean = 1, sd = 1))
data0815 = data.frame(Molecular = LETTERS[11:15],
Nominal = sample(100:750,5),
Mass = rnorm(5, mean = 1, sd = 1))
Затем, чтобы объединить их, я добавлю категорический столбец, который отобразит их имя, затем я использовал rbind
, чтобы связать их:
data0724$Grp = "0724"
data0802$Grp = "0802"
data0815$Grp = "0815"
DF <- rbind(data0724,data0802,data0815)
Molecular Nominal Mass Grp
1 A 623 0.8796062 0724
2 B 739 2.0128343 0724
3 C 531 0.7985419 0724
4 D 381 -1.0376825 0724
5 E 303 0.8041108 0724
6 F 244 2.2765787 0802
7 G 310 0.7750387 0802
8 H 168 0.6781074 0802
9 I 448 2.4878378 0802
10 J 576 -0.6679280 0802
11 K 296 1.2796279 0815
12 L 493 2.8778640 0815
13 M 391 0.9959393 0815
14 N 491 0.7215460 0815
15 O 354 1.4749117 0815
Итак, теперь, если вы хотите построить их, вам не нужно использовать строку для eah c dataframe, но скорее сделайте:
library(ggplot2)
ggplot(DF, aes(x = Nominal, y = Mass, color = Grp))+
geom_point(shape = 16, alpha = 0.7)+
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black"),
axis.text = element_text(size = 11, face = "bold"),
axis.title = element_text(size=13, face="bold"),
aspect.ratio = 1,
)+
scale_color_manual(name = "Date", values = c("#00A5FF","#00BC59","#FC717F"))
И вы получите:
Отвечает ли он на ваш вопрос?