Этот игрушечный фрейм данных представляет мои данные.
Time Gene Value
1 0 A 1
2 1 A 2
3 2 A 3
4 0 B 1
5 1.2 B 2
6 1.7 B 2
7 2.1 B 2
8 3 B 2
Используя следующий код, я могу превратить это в линейный график с двумя линиями, одной для A и одной для B.
ggplot(data=Data, aes(x=Time, y=Value, group=Gene)) +
geom_line(aes(color=Gene), linetype = "longdash", size=2)+
theme_classic()+
labs(title= paste("Genes over time course"),
x = "Time",
y = "Expression")+
theme(plot.title=element_text(size=20, face = "bold",hjust = 0.5),
axis.text.x=element_text(size=10),
axis.text.y=element_text(size=10),
axis.title.x=element_text(size=15),
axis.title.y=element_text(size=15),
legend.text=element_text(size=10))
Однако я бы хотел, чтобы ген А был представлен только точками, а ген Б — только линией. Как я могу это сделать, учитывая данные?
Используя data=~subset(., ...)
, мы можем контролировать, какие данные поступают на каждый слой.
ggplot(Data, aes(x = Time, y = Value, color = Gene, group = Gene)) +
geom_line(data = ~ subset(., Gene != "A")) +
geom_point(data = ~ subset(., Gene == "A"))
(Вы также можете использовать dplyr::select
вместо subset
, результаты будут такими же.)