#r #ggplot2
#r #ggplot2
Вопрос:
Я хочу создать 3 сложенных линейных графика, L, F amp; P, все с общей глубиной оси x и точками, окрашенными Depo. Я нашел несколько способов укладки графиков, но мне трудно интегрировать желаемое цветовое кодирование для точек.
Вот несколько примеров данных — извините, по какой-то причине они не останутся отформатированными в виде таблицы
depth L F P Depo
67.48 1.003 1.063 1.066 Turb
67.63 1.004 1.020 1.024 Dri
67.73 1.011 1.017 1.028 Dri
67.83 1.006 1.007 1.014 Turb
67.92 1.003 1.029 1.032 Pro
68.06 1.004 1.007 1.011 Pro
Я могу вроде как получить то, что хочу, создав графики, а затем используя grid.нарисуйте, чтобы сложить их. Но при этом значения оси x повторяются для каждого графика.
Lin <- ggplot(MyData, aes(x=depth, y=L)) geom_line() geom_point(data = MyData, aes(x=depth, y=L, color = Depo))
Fab <- ggplot(MyData, aes(x=depth, y=P)) geom_path() geom_point(data = MyData, aes(x=depth, y=P, color = Depo))
Fol <- ggplot(MyData, aes(x=depth, y=F)) geom_path() geom_point(data = MyData, aes(x=depth, y=F, color = Depo))
grid.draw(rbind(ggplotGrob(Fol), ggplotGrob(Lin), ggplotGrob(Fab), size = "last"))
Следующее работает для построения графиков без повторения оси x, но я не могу понять, как изменить точки с помощью Depo.
mm <- melt(subset(MyData, select=c(depth, L, F,P)), id.var="depth")
ggplot(mm, aes(x = depth, y = value)) geom_line(aes(color = variable))
facet_grid(variable ~ ., scales = "free_y") theme(legend.position = "none")
Ответ №1:
Я бы предложил не использовать melt
. По моему опыту, это сложно использовать правильно, и ошибки легко допускаются. Лично я предпочитаю tidyr
глаголы gather()
и spread()
.
Вот мой подход к вашему графику:
MyData %>%
gather(variable, value, L:P) %>%
ggplot() aes(depth, value)
geom_path() geom_point(aes(color = Depo, shape = Depo), size = 3)
facet_wrap(~variable, ncol = 1, scales = "free_y")
Первый шаг — это gather
операция над столбцами L, F и P с сохранением глубины и Depo. Мой код для графика не сильно отличается от того, что вы уже пробовали.
Ответ №2:
Вы можете отключить ось x для верхних графиков:
Lin <- ggplot(MyData, aes(x=depth, y=L)) geom_line() geom_point(data = MyData, aes(x=depth, y=L, color = Depo)) theme(axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank())
Fab <- ggplot(MyData, aes(x=depth, y=P)) geom_path() geom_point(data = MyData, aes(x=depth, y=P, color = Depo))
Fol <- ggplot(MyData, aes(x=depth, y=F)) geom_path() geom_point(data = MyData, aes(x=depth, y=F, color = Depo)) theme(axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank())
grid.draw(rbind(ggplotGrob(Fol), ggplotGrob(Lin), ggplotGrob(Fab), size = "last"))