r - R - ggplot 忽略多变量图中的一个变量中的 NA 值
问题描述
我试图在一个图上表示 2 个时间序列变量,以便比较它们;一个在一年内有 365 个值(2016 年的降雨量值),另一个在同一年有 28 个值(从卫星图像中提取的值)。问题是我不知道如何在同一个图上用正确的 x 和 y 轴表示两者。
我通过在 NA 中为只有 28 个值的变量添加行来合并包含我的 2 个变量的两个数据框;现在我有一个包含两个变量的数据框。
这是我的数据框:
> head(VH_meteo_2016, 20)
date pmm_cat bati_VH_2016
1 2016-01-01 0.000 NA
2 2016-01-02 0.254 NA
3 2016-01-03 0.000 -23.51970255
4 2016-01-04 1.270 NA
5 2016-01-05 4.572 NA
6 2016-01-06 1.016 NA
7 2016-01-07 1.270 NA
8 2016-01-08 0.000 NA
9 2016-01-09 0.000 NA
10 2016-01-10 0.000 NA
11 2016-01-11 0.000 NA
12 2016-01-12 0.000 NA
13 2016-01-13 0.000 NA
14 2016-01-14 0.000 NA
15 2016-01-15 0.000 -18.11035861
16 2016-01-16 3.556 NA
17 2016-01-17 9.652 NA
18 2016-01-18 5.080 NA
19 2016-01-19 0.000 NA
20 2016-01-20 0.000 NA
但是当我尝试绘制一个图时,我只得到了 365 个值变量表示(我不知道为什么),如下所示:
ylim.prim <- c(0, 125)
ylim.sec <- c(-25, -4)
b <- diff(ylim.prim)/diff(ylim.sec)
a <- b*(ylim.prim[1] - ylim.sec[1])
ggplot(VH_meteo_2016, aes(x=date)) +
geom_bar(aes(y=pmm_cat), stat = "identity", fill="blue") +
geom_line(aes(y = a + VH_meteo_2016$bati_VH_2016 * b), color = "orange", size=1.25) +
scale_y_continuous(name="Precipitations (mm)",
sec.axis = sec_axis(~ . * -52/125, name = "Backscatter (Sigma0 in dB)"),
limits = c(0,150)) +
ggtitle("Precipitations and backscatter over 2016") +
xlab("Time") +
theme_light()
结果 :
然后我尝试忽略 28 values 变量中的 NA 值,但它也删除了 365 values 变量中的相应值:
ylim.prim <- c(0, 125)
ylim.sec <- c(-25, -4)
b <- diff(ylim.prim)/diff(ylim.sec)
a <- b*(ylim.prim[1] - ylim.sec[1])
VH_meteo_2016=na.omit(VH_meteo_2016)
ggplot(VH_meteo_2016, aes(x=date)) +
geom_bar(aes(y=pmm_cat), stat = "identity", fill="blue") +
geom_line(aes(y = a + VH_meteo_2016$bati_VH_2016 * b), color = "orange", size=1.25) +
scale_y_continuous(name="Precipitations (mm)",
sec.axis = sec_axis(~ . * -52/125, name = "Backscatter (Sigma0 in dB)"),
limits = c(0,150)) +
ggtitle("Precipitations and backscatter over 2016") +
xlab("Time") +
theme_light()
结果 :
有没有办法获得第一个结果,但第二个结果的橙色线(对应于 28 个值变量),例如忽略 NA 但仅适用于 28 个值变量?