Как использовать cop_carteisan и coord_flip вместе в ggplot2
У меня есть странное поведение от ggplot. Здесь MWE:
the_data <- data.frame(
myx <- 1:10,
lower <- rnorm(10,-5,1),
mean <- rnorm(10,0,.5),
upper <- rnorm(10,5,1))
the_data2 <- data.frame(
myx <- 1:10,
lower <- rnorm(10,-5,1),
mean <- rnorm(10,0,.5),
upper <- rnorm(10,5,1))
Теперь я хочу построить график, в котором у конечного продукта будет точка для среднего значения, и строка, взятая из нижней в верхнюю. Но я хочу, чтобы эти линии были горизонтальными. Я также хочу "увеличить масштаб" на графике, чтобы были показаны только значения от -1 до 1. Мне нужно использовать coord_cartesian
, потому что, если я использую ylim
, он отбрасывает точки данных, которые находятся за пределами графика, что испортит строки. Но когда я запускаю:
ggplot() +
geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data) +
geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data2) +
coord_cartesian(ylim = c(-1, 1)) +
coord_flip()
он не применяет "масштабирование" и не переключает два аргумента:
ggplot() +
geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data) +
geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data2) +
coord_flip() +
coord_cartesian(ylim = c(-1, 1))
применяется масштабирование, но не перевертывание. Что здесь происходит?
Ответы
Ответ 1
coord_flip
- обертка вокруг coord_cartesian
. Вы выполняете два вызова coord_cartesian
со второй перезаписью первой. Вы можете сделать это:
ggplot() +
geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data) +
geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data2) +
coord_flip(ylim = c(-1, 1))
Ответ 2
Нет смысла иметь несколько систем координат для одного и того же графика. Вы хотите coord_flip(ylim = c(-1, 1))