Как добавить вертикальную линию к графику ggplot
, который использует масштаб шкалы на вертикальной оси?Как добавить вертикальную линию при использовании шкалы журнала?
Например,
ggplot(data.frame(x=1:2, y=c(10,20)), aes(x,y)) +
geom_line() +
geom_vline(xintercept = 1.5)
работает, как ожидалось. Если один из них преобразует вертикальную ось в шкалу логарифма:
затем вертикальная линия исчезает. Может быть уместным в том, что если один изменяет данные незначительно:
ggplot(data.frame(x=1:2, y=c(1,20)), aes(x,y)) + # y[1] is now different
geom_line() +
geom_vline(xintercept = 1.5) +
coord_trans(y = 'log')
то вертикальная линия, по-прежнему отсутствует, но выдается предупреждающее сообщение:
Warning messages:
1: In self$trans$y$transform(y) : NaNs produced
2: In trans$transform(value) : NaNs produced
Так что возможно, что отсутствует линия вызвана пытаясь записать журналы 0 (-Inf и без предупреждения) или отрицательные числа (NaN и предупреждение).
(sessionInfo()
дает R version 3.3.1 (2016-06-21)
и ggplot2_2.2.0
.)
Это может быть связано с этим (закрытые, но не фиксируется) вопрос: [geom_h/VLine рисует неполные или нет линии с coord_trans()] (https://github.com/tidyverse/ggplot2/issues/895) – Henrik
[Это была известная проблема в течение длительного времени] (https://groups.google.com/forum/#!topic/ggplot2/FGbhwyfkc74). – Axeman