Я боролся с geom_abline
командами в сочетании с scale_x_reverse
.Почему geom_abline не оценивает scales_x_reverse?
Например, следующий код создает график из 10 пунктов после идентификатора. Я могу изменить ось x на scale_x_reverse
, но когда я добавляю идентификатор, используя geom_abline
, красная листинговая линия не отменяется.
ggplot(data.frame(x=seq(1,10),y=seq(1,10))) +
geom_point(aes(x=x,y=y)) +
geom_abline(color="red") +
scale_x_reverse(limits=c(10,-10)) +
scale_y_continuous(limits=c(-10,10)) +
ggtitle("I would expect the red line to be on top of the points")
Кажется, что geom_abline
участки линии intercept=0, slope=1
, но не чтит масштабное преобразование.
В качестве обходного пути, я знаю, что я могу заставить наклон делать то, что я хочу:
ggplot(data.frame(x=seq(1,10),y=seq(1,10))) +
geom_point(aes(x=x,y=y)) +
geom_abline(intercept=0, slope=-1, color="red") +
scale_x_reverse(limits=c(10,-10)) +
scale_y_continuous(limits=c(-10,10)) +
ggtitle("I would expect the red line to be on top of the points")
Я нахожу это geom_abline
поведение сбивает с толку, и я не понимаю причины, почему это должно было осуществляться таким образом. Учитывая хороший дизайн ggplot, я уверен, что должна быть хорошая логическая причина, но я не мог этого понять.
Может ли кто-нибудь объяснить это мне?
Кажется, это [известная проблема] (https://github.com/hadley/ggplot2/issues/46), что 'geom_abline' не работает с масштабами. – shadow
Хотя в этом случае кажется, что проблема на самом деле другая. 'geom_abline' использует' geom_segment' внутри, а 'geom_segment' имеет ту же проблему (добавьте' geom_segment (x = -11, xend = 11, y = -11, yend = 11, color = 'blue') 'вместо' geom_abline '). – shadow
Интересно, что это кажется проблемой только при использовании фиксированных 'x',' y', но не при использовании этого в вызове 'aes'. Кажется, это связано с [этой проблемой] (https://github.com/hadley/ggplot2/issues/706) – shadow