轴与小平面

似乎自ggplot2.2.2更新以来没有涵盖这个主题,其中旧的解决方案像这个和这个不再适用。 幸运的是,这个过程比以前简单得多。 一行代码,你有一个辅助的Y轴(如图所示)。

但我无法在我的地块上获得第二个X轴...

我正在比较沿沉积物核心的金属浓度的深度剖面。 我想将碳和磷酸盐浓度显示为金属浓度背后的geom_area 。 问题是碳和磷酸盐的浓度都不和金属相同。 因此我需要第二个轴。

主题如下(摘自本网站):

theme_new <- theme(panel.grid.major = element_blank(), panel.grid.minor =  element_blank(), panel.background = element_blank(), axis.line = element_line(colour = "black"), strip.text.x = element_text(size=10, angle=0, vjust=0), strip.background = element_blank(), strip.text.y = element_text(angle = 0), legend.position="none",panel.border = element_blank(), axis.text.x=element_text(angle=45,hjust=1)) # Axis tick label angle

即使我在X轴下指定它,该代码也给了我第二个Y轴。

ggplot(MasterTable)+
  geom_line(aes(Depth,Conc.nM))+
  geom_area(aes(Depth,Conc.uM, fill=Variable))+
  scale_x_continuous("Depth (cm)", sec.axis = sec_axis(~ . *100, name = "Carbon & Phosphate"))+
  scale_y_continuous("Metal concentration (nM)")+
  coord_flip()+
  theme_new+
  theme(legend.position = "right")+
  facet_grid(. ~ Assay, scales = "free")

ggplot2图

任何人都可以帮助我将副轴放在图的顶部?

谢谢!!

我的MasterTable的输出如下:

(深度= c(15L,5L,2L,-1L,-3L,-5L,-7L,-9L,-11L,-13L,-15L,-17L,-19L,-21L,-23L, -25L,-27L,-29L,-31L,15L,5L,2L,-1L,-3L,-5L,-7L,-9L,-11L,-13L,-15L,-17L,-19L,-21L ,23L,-25L,-27L,-29L,-31L),Conc.nM = c(24L,24L,24L,100L,100L,75L,75L,85L,85L,120L,300L,1000L,200L,240L ,240L,800L,1100L,1500L,2300L,0L,10L,0L,50L,200L,200L,50L,50L,200L,15L,0L,0L,10L,120L,200L,1500L,2100L,2000L,测定=结构(c(1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,2L,2L,2L, 2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L),标签= c(“Instrument 1”,“Instrument 2” =“因子”),Conc.uM = c(0L,0L,0L,1L,4L,10L,10L,10L,5L,7L,10L,14L,14L,14L,14L,13L,12L,12L,12L, (1L,1L,1L,4L,6L,9L,11L,11L,8L,8L,8L,20L,10L,9L,9L,9L,10L,10L,10L) ,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,1L,1L,1L,1L, 1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L),.Label = c(“Carbon”,“Phosphate”),class =“factor” ,.Names = c(“Depth”,“Conc.nM”,“Assay”,“Conc.uM”,“Variable”),class =“data.frame”,row.names = c(NA,-38L) )


从你的代码:

...
  scale_x_continuous("Depth (cm)", sec.axis = sec_axis(~ . *100, name = "Carbon & Phosphate"))+
  scale_y_continuous("Metal concentration (nM)") + 
  coord_flip() ...

考虑你想要“碳和磷酸盐”与哪个主轴平行。 还要考虑在使用coord_flip的情况下“x轴”和“y轴”的含义。

TL; DR :将您的辅助轴移动到scale_y_continuous


感谢Brian的回答,并修改了上面提出的主题,我得到了下图。

泥沙核心

正如他所建议的那样,您必须先使用类似这样的方式手动修改数据:

MasterTable$Conc.uM <- MasterTable$Conc.uM *100

然后,在代码中,使用与上面使用的修正系数相同的修正系数来调整轴。 这是制作这个数字的代码。

ggplot(MasterTable)+
  geom_line(aes(Depth,Conc.nM))+
  geom_area(aes(Depth,Conc.uM, fill=Variable), alpha=0.6)+                            #Area for second X-axis
  geom_area(aes(Depth,Conc.nM), alpha=0.95)+                                     
  geom_point(aes(Depth,Conc.uM), size=1, shape=16, alpha=0.3)+                        #Adding points for second X-axis
  geom_point(aes(Depth,Conc.nM), size=1, shape=16, alpha=0.8)+   
  scale_fill_manual(values=colours) + scale_colour_manual(values=colours) +      

  labs(title="Sediment core", color="",fill="")  +                                    #Place legend title in both color="" and fill=""

  scale_y_continuous("Metal concentration (nM)", 
                 sec.axis = sec_axis(~ . /100, name = "[Pi] (uM)                                             DOC (mg/L)"))+    
  scale_x_continuous("Depth (cm)", breaks=pretty_breaks(n=7))+

  coord_flip()+                                                                       #Required to make a proper depth profile 
  theme_new+                                                                          #Reference to custom theme
  facet_grid(. ~ Assay, scales = "free")                                              #Scales makes that the axis size can change 

现在我只剩下一个问题需要解决。 我希望刻度线和标签在这个方面。 看起来更符合逻辑,并且不像在图的顶部那样繁忙。

链接地址: http://www.djcxy.com/p/64573.html

上一篇: axis with facets

下一篇: R, ggplot — customize my barplot