当前位置: 首页 > 知识库问答 >
问题:

添加带有镶嵌面的次X轴

金谭三
2023-03-14

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

但是我不能在我的地块上得到第二个X轴...

我正在比较沉积物核心沿线金属浓度的深度剖面。我想将碳和磷酸盐浓度显示为金属浓度后面的一个几何区域。问题是碳和磷酸盐的浓度与金属不在同一范围内。因此,我需要第二个轴。

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

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

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

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")

有人能帮我把次轴放在图的顶部吗?

谢谢!!

我的MasterTable的dput如下:

结构(列表(深度=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。(24L,24L,24L,24L,24L,100L,100L,100L,100L,100L,75L,85L,85L,85L,120L,300L,1000L,200L,100L,240L,240L,240L,240L,800L,1100L,1500L,2300L,100L,100L,24L,24L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,2300L,100L,100L,100L,100L,2300L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,100L,2300L,23002L、2L、2L、2L、2L、2L、2L、2L、2L、2L、2L、2L、2L、2L、2L、2L、2L、2L、2L、2L、。标签=c(“仪器1”,“仪器2”),类别=“因子”),浓度。uM=c(0L、0L、0L、1L、4L、10L、10L、10L、5L、7L、10L、14L、14L、14L、13L、12L、12L、12L、1L、1L、1L、1L、4L、6L、9L、11L、11L、8L、8L、20L、10L、9L、9L、10L、10L、10L、10L、10L、10L),变量=结构(c(2L、2L、2L、2L、2L、2L、2L、2L、2L)L,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,1L,1L。标签=c(“碳”,“磷酸盐”),class=“因子”)。名称=c(“深度”,“浓度nM”,“分析”,“浓度uM”,“变量”),class=“数据帧”,行。名称=c(NA,-38L))

共有2个答案

汪阳飇
2023-03-14

根据您的代码:

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

考虑您想要哪个主轴”Carbon

TL;DR:只需将次轴移动到scale\u y\u continuous。

秦博达
2023-03-14

多亏了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 

现在我只剩下一个问题要解决。我想勾号和标签下的刻面。似乎比把它放在图的顶部更符合逻辑,也不那么繁忙。

 类似资料:
  • 我是tesseract库的新手,我在Ubuntu 12.04上设置了它。 我就是用这个数据集来被认可的。当我使用这段代码将这些图像原样(没有任何预处理)提供给tesseract时,我得到了大约70-75%的图像。准确性。 我希望准确度达到90%,所以我做了一些预处理步骤来增强图像 预处理步骤 应用底帽运算符,具有半径为 12 的圆的结构化元素 补充图像以使背景变为白色,文本变为黑色 增强所得图像的

  • 问题内容: 我有这样的查询- 由于将rowz = 1放入查询中,因此该查询无法正常工作?如果我只想要在嵌套后rowz = 1的结果该怎么办。 当我这样做时- 从news_article中选择unnest(string_to_array(na.news_category_id,’,’)):: int rowz; 我的桌子是- 然后它给了我这个结果- 问题答案: 这回答了您的问题: 诀窍是将数组放入一

  • 问题内容: 在我不使用Spring的项目中,我仅使用Hibernate。我不想将hbm.xml文件用于实体映射/描述/等。我只想使用注释。 如何告诉Hibernate 从某些包中加载所有带注释的类? 我在网上搜索,但没有运气。我也找不到有关最新的Hibernate版本的信息(大多数是过时的文章/帖子/等)。 编辑1: http://docs.jboss.org/hibernate/orm/4.3/

  • 问题内容: 我有一个ajax调用,其中我使用jQuery.ajax()向mvc操作发出请求。这一切都很好。但是由于某些形式具有文件控制,我将其从使用jQuery.ajax()更改为使用XMLHttpRequest通过HTML5 File API发送。 由于进行了此更改,因此MVC操作方法不再将其视为ajax请求。使用Fiddler2,我注意到它不再向请求添加“ X-Requested- With:

  • 问题内容: 我有一个下拉列表。我想添加图像。我尝试在tha 标签中添加标签…但是仍然无法显示图像。如何使用标签? 问题答案: 这是不可能的,因为仅支持text。 您可能必须使用复杂的HTML / CSS / JavaScript来滚动自己的下拉控件。如何做可能不在您的问题范围内。 或者,您可以使用非重复,并在文本上加上一些填充以达到类似的效果。但是,如果每个人都有一个唯一的图像,那么您的代码将被每

  • 问题内容: 在我从事的项目中,我不使用Spring,而仅使用Hibernate。我不想将hbm.xml文件用于实体映射/描述/等。我只想使用注释。 如何告诉Hibernate 从某些包中加载所有带注释的类? 我在网上搜索,但没有运气。我也找不到有关最新的Hibernate版本的信息(大多是过时的文章/帖子/等)。 编辑1: http://docs.jboss.org/hibernate/orm/4