【发布时间】:2018-04-04 03:56:54
【问题描述】:
我有 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)、“值”(即我前面提到的好处)和“月”。
例如,
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)
我在 ggplot2 中使用 facet_grid 显示了 12 个图的数据。它看起来很漂亮。标签需要帮助,缩放需要帮助。问题: 1.如何将每个绘图的 x 轴标签替换为 2 个 x 轴,一个用于组成 VGroupid 的两个变量中的每一个。因此,我不想使用 VGroupid,而是想实际显示 Vc 和 Vw 的值。我需要对 y 轴执行相同的操作,以将 RGroupid 替换为实际的 Rc 和 Rw 值。只有一个 ggplot2 我可以为此使用 annotate 函数,但此函数不适用于带有 facet_grid 的多个绘图。 2.每个图有不同长度的RGroupid(每个图的y轴长度不一样)。如何使用不同的 y 轴显示每个图?
对于问题 #1:只有一个月的一个 ggplot2,我可以使用以下代码来创建轴,但这不能转移到 12 绘图面板: #轴
annotate("text", x=-0.25, y=seq(1,length(Rwdecs), 1), label=Rc, color="blue",
size=2.25)+ #http://ggplot2.tidyverse.org/reference/annotate.html
annotate("text", x=Vwscale, y=0.5, label=Vc, color="blue", size=2.25)+
if(Rw>0){scale_y_discrete(labels=Rwdecs)
} else{theme(axis.title.y=element_blank(),
axis.text.y=element_blank(),
axis.ticks.y=element_blank())}+
if(Rw>0){scale_x_discrete(labels=Vw)
} else{theme(axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank())}
【问题讨论】:
-
欢迎来到 SO。请参加stackoverflow.com/tour