Я пытаюсь аннотировать сюжет, используя некоторые сегменты линии. Ось оси лучше всего отображается с помощью преобразования журнала. Я использую ggplot2
, который обрабатывает преобразования, что также означает, что мне не нужно преобразовывать в местоположение моих сегментов линии. Но когда я применяю преобразование, сегменты линии исчезают (ну - они больше не «вписываются» в окно графика из-за преобразования). Любые предложения о том, как заставить их «следить» за трансформацией?Преобразование не пересекает сегменты линии в ggplot2
Минимальный пример:
library(ggplot2)
## Base plot:
B <- ggplot(data = data.frame(X = 10^(1:10), Y = 1:10),
aes(x = X, y = Y)) + geom_point()
## Generate segments:
S1 <- geom_segment(x = 1000, xend = 1000,
y = 3, yend = 5)
S2 <- geom_segment(x = 20, xend = 2.5e9,
y = 8, yend = 7)
## Generate transformation:
T <- scale_x_continuous(trans = "log")
Сравните следующие:
B # Basic plot
B + T # Basic plot, transformed
B + S1 + S2 # Basic, untransformed, with segments
B + S1 + S2 + T # Should be transformed with segments: segments missing
Я знаю, что я мог бы просто превратить расположение сегментов, но я на самом деле, а найти более ggplot2
-style решение !
Hack Решение:
S3 <- geom_segment(x = log(1000), xend = log(1000),
y = 3, yend = 5)
S4 <- geom_segment(x = log(20), xend = log(2.5e9),
y = 8, yend = 7)
B + S1 + S2
B + S3 + S4 + T #Fine, but not elegant.
Спасибо!
Спасибо, очень полезно! Правда о 'log10' - просто пытался свести к минимуму мой минимальный пример, но я зашел слишком далеко. – dynamo