代码之家  ›  专栏  ›  技术社区  ›  Marty999

ggplot2:反转次连续x轴

  •  1
  • Marty999  · 技术社区  · 7 年前

    我试图在ggplot顶部反转第二个X轴。

    ggplot(
      data=MasterTable, aes(x=Concentration, y=Signal, color=factor(Assay))) + 
      scale_x_continuous("Chemical 1", 
                         sec.axis = sec_axis(~ . *1, name = "Chemical 2"), scale_x_reverse(limits=c(400,0)))
    

    如果删除代码的最后一部分( scale_x_reverse ...) 它使用与底部X轴相同的次轴进行绘图。我已经设法反转了底轴,但这也反转了顶轴。我只希望反转顶轴。

    在此方面的任何帮助都将不胜感激。

    谢谢

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  5
  •   Marco Sandri    7 年前

    以下是一个可行的解决方案:

    MasterTable <- data.frame(Concentration=rep(c(0,50,100,200,300, 350, 400),2),
    Signal=c(11800,13000,12000,12000,16000,15500,15570,11600,11700,8000,8000,6000,4000,3000),
    Assay=rep(1:2,each=7))
    
    library(ggplot2)
    # Reverse Signal vector of the blue series (for Assay =1)
    MasterTable$Signal[MasterTable$Assay==1] <- rev(MasterTable$Signal[MasterTable$Assay==1])
    
    ggplot(data=MasterTable, aes(x=Concentration, y=Signal, color=factor(Assay))) + 
    geom_line(lwd=1) + geom_point(size=3) + guides(color='none') +
    scale_x_continuous('Chemical 1 (nM)', trans='reverse',
                       sec.axis = sec_axis(~ 400 - . , name='Chemical 2 (nM)')) 
    

    enter image description here