Как сделать непрерывные графики с разделением строк / блоков в ggplot2 - PullRequest
0 голосов
/ 27 апреля 2020

У меня расплавленный фрейм данных содержит Msrt_Order, Sample_Intensity, rtc, Group и Msrt_Day.

Я хочу построить график пика интенсивности образца вдоль Msrt_Order (измерение порядок, от 1 до 1000 +)

ggplot(peak) +  geom_jitter(aes(x = Msrt_Order, y = Sample_Intensity, color = rtc, shape=rtc), alpha = 0.6)

enter image description here

Я хочу улучшить его, разделив их в соответствии с msrt_Day (measure_day, заказ вместе с Msrt_Order, но вместо 1000+ факторов у нас есть только 24 дня, поскольку мы измеряем более 40 образцов в день.)

Чего я НЕ хочу, так это

ggplot(peak) +  geom_jitter(aes(x = Msrt_Order, y = Sample_Intensity, color = Msrt_Day, shape=rtc), alpha = 0.6)

enter image description here

, поскольку их 24, трудно различить guish, и при этом я не хочу, чтобы в легенде было 24 значка.

Я пытался использовать facet_grid

ggplot(peak) +  geom_jitter(aes(x = Msrt_Order, y = Sample_Intensity, color = rtc, shape=rtc), alpha = 0.6) + facet_grid(~Msrt_Day)

enter image description here Но это НЕ то, что я ожидал, я хочу иметь непрерывный график с 24 блоками, разделенными Mrst_Day при сохранении Msrt_Order.

Надеюсь, вы, ребята, поняли мою идею ...

Пиковая ссылка CSV здесь peak.csv

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Я думаю, что вы хотите сделать, это добавить одну или несколько переменных, которые описывают границы Msrt_Day, используя значения оси X Msrt_Order.

Вот одна попытка: сгруппировать по Msrt_Day и определить границу как максимальное значение Msrt_Order для каждой группы. Затем вы можете использовать это значение для geom_vline.

peak %>% 
  group_by(Msrt_Day) %>% 
  mutate(orderMax = max(Msrt_Order) %>% 
  ungroup() %>% 
  ggplot(aes(Msrt_Order, Sample_Intensity)) + 
  geom_point(aes(color = rtc)) + 
  geom_vline(aes(xintercept = orderMax)) +
  theme_bw()

Результат:

enter image description here

0 голосов
/ 27 апреля 2020

Исходя из ваших примеров и уточняющих комментариев, это решение вашей проблемы:

library(tidyverse)
data <- read_csv(file = "peak.csv")

plot1 <- ggplot(data) +
  geom_jitter(aes(x = Msrt_Order, y = Sample_Intensity, color = rtc, shape=rtc), alpha = 0.6) +
  facet_grid(~Msrt_Day, scales = "free_x")

pdf(file = "test.pdf", width = 30, height = 5)
plot1
dev.off()
...