索引变量的辅助轴&在循环中产生的多个图的相同轴 - 在ggplot2中

时间:2018-03-27 23:41:01

标签: r ggplot2

我有12个月度数据面板。每个面板x轴是一个唯一的id,它结合了两个变量(Vc和Vw)。每个面板y轴是一个唯一的id,它结合了两个变量(Rc和Rw)。 Vc和Vw(VGroupid)VGroupid的组合数的向量长度对于每个月是相同的。 Rc和Rw(RGroupid)组合的向量长度每月变化。选择每个VGroupid中的几个RGroupid中的每一个的结果显示为几个好处之一(0,13,26或36)。这些好处与颜色不同。每个月的数据都是在for循环中创建的。每个月的结果会相互附加到一个列表中。然后将该列表熔化为四个类别," VGroupid","变量" (这是RGroupid),"值" (这是我之前提到的好处)和"月。"

例如,

group

我在ggplot2中使用facet_grid镶嵌了12个图表显示的数据。它看起来很漂亮。标签需要帮助和缩放需要帮助。问题: 1.如何将每个绘图的x轴标签替换为2个x轴,一个用于构成VGroupid的两个变量中的每一个。因此,我想要实际显示Vc和Vw的值,而不是使用VGroupid。我需要对y轴执行相同的操作,以将RGroupid替换为实际的Rc和Rw值。只有一个ggplot2我可以使用annotate函数,但是这个函数不能用于facet_grid的多个图。 2.每个图具有不同长度的RGroupid(每个图的y轴长度不同)。如何以不同的y轴显示每个图?

对于问题#1:只用一个月的ggplot2,我可以使用以下代码创建轴,但这不能转移到12绘图面板:   #axes

Vc=c(0,10e6,2*10e6) 
Vw=c(0,10e6,2*10e6)
VGroupid =c(1,2,3,4,5,6,7,8,9) such that 
VcinVGroupid = c(0,0,0,10e6,10e6,10e6,2*10e6,2*10e6,2*10e6) 
VwinVGroupid = c(0,10e6,2*10e6,0,10e6,2*10e6,0,10e6,2*10e6)
[So VGroupid==1 is Vc==0 and Vw==0]
Rc_Jun=c(0,10e6,2*10e6)
Rw_Jun=c(0,10e6,2*10e6)
RGroupid_Jun=seq(1,9,1)
Rc_May=c(0,10e6,2*10e6)
Rw_May=c(0,10e6)
Rc_April=c(0,10e6)
Rw_April={} (empty set, no options)

An extremely small sample of dplot=
  VGroupid variable value    month
          1        2    36     April
          2        2    36     April
          1        1    36     April
          2        1    36     April
          3        2    36     April
          1        2    36     April
         6       2     0       May
         5       3     0       May
         5       4     13       May
         5       5     26       May
         1        1     0      June
         2        1     36      June
         6        1     26      June
         1        2     13      June
         9        1     0      June
         8        9     36      June
         6        8     26      June
         7        7     13      June

ggplot(dplot, aes(VGroupid, variable, group=factor(month), color=factor(value)), size=3)+ 
  geom_point()   +
  facet_grid(. ~month)

1 个答案:

答案 0 :(得分:0)

解决方案:

问题1回答:我猜ggplot2已经宣布没有辅助轴,除非辅助轴是主要的功能 - 这通常是有意义的,但在我的情况下,因为辅助轴是而不是一个功能主要的。两个轴组合成一个索引。索引(例如,相同的点具有两个y轴标识符)。遗憾的是,辅助轴功能不适用于R曲线。解决方案:我连接了主轴上的索引。文字看起来很草率但是有效:

P + scale_y_continuous(场所= DisplaysR [1,3],标签=膏(DisplaysR [1],DisplaysR [2],九月="&#34))

问题2答案:我首先发现了2018 R工作室版本的ggplot2备忘单:rstudio.com/resources/cheatsheets将我的数据从因子转换为数字:stackoverflow.com/questions/29278153 / ...所以我回答了我的问题所以全部y轴观测值是相同的。这个多点的所有数据都以相同的比例显示,我最初用scale_y_continuous(limits = min和max of RGroupid)限制 - 但后来发现实际上更好的设置中断和标签并使用scale_y_continuous命令:

p + scale_y_continuous(breaks = DisplaysR [,3],labels = paste(DisplaysR [,1],DisplaysR [,2],sep =","))+ #GlobalRoptions [2, ])+ scale_x_continuous(breaks = seq(1,15,1),labels = paste(Voptions [,1],Voptions [,2],sep =","))