使用带有自定义转换的coord_trans()时ggplot中奇怪的geom_vline()行为

使用带有自定义转换的coord_trans()时ggplot中奇怪的geom_vline()行为,r,ggplot2,scaletransform,R,Ggplot2,Scaletransform,我试图在我的情节中使用一个新的符号。它工作得很好 library(tidyverse) library(scales) log_modulus_trans <- function() trans_new(name = "log_modulus", transform = function(x) sign(x) * log(abs(x) + 1), inverse = function(x) sign(x) * ( exp(abs(

我试图在我的情节中使用一个新的符号。它工作得很好

library(tidyverse)
library(scales)

log_modulus_trans <- function() 
  trans_new(name = "log_modulus", 
            transform = function(x) sign(x) * log(abs(x) + 1), 
            inverse = function(x) sign(x) * ( exp(abs(x)) - 1 ))

# fake data
set.seed(1)
d <- data_frame(
  tt = rep(1:10, 3),
  cc = rep(LETTERS[1:3], each = 10),
  xx = c(rnorm(10, mean = 100, sd = 10), 
         rnorm(10, mean = 0, sd = 10),
         rnorm(10, mean = -100, sd = 10)))

ggplot(data = d, 
       mapping = aes(x = tt, y = xx, group = cc)) +
  geom_line() + 
  coord_trans(y = "log_modulus")


你知道如何让
geom_vline()
从绘图窗口的顶部转到底部吗。。。还是解决黑客问题?

这里有一个使用
geom\u段的解决方案

ggplot(data = d, 
       mapping = aes(x = tt, y = xx, group = cc)) +
  geom_line() + 
  geom_segment(x = 5, xend = 5, y = -150, yend = 150) +
  coord_trans(y = "log_modulus")

ggplot(data = d, 
       mapping = aes(x = tt, y = xx, group = cc)) +
  geom_line() + 
  geom_segment(x = 5, xend = 5, y = -150, yend = 150) +
  coord_trans(y = "log_modulus")