#r #ggplot2 #plot
#r #ggplot2 #график
Вопрос:
Этот игрушечный фрейм данных представляет мои данные.
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))
Однако я бы хотел, чтобы ген A был представлен только точками, а ген B был представлен только линией. Как я могу выполнить это с учетом данных?
Ответ №1:
Используя 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
, результаты те же.)