在 ggplot 中使用 NA 值创建连续折线图并添加辅助 y 轴
Posted
技术标签:
【中文标题】在 ggplot 中使用 NA 值创建连续折线图并添加辅助 y 轴【英文标题】:Creating continuous line graph in ggplot with NA values and adding secondary y axis 【发布时间】:2021-11-25 08:52:54 【问题描述】:我想创建一个连续的时间序列折线图。但是,我的数据中有NA
值,因此典型的输出是不连续的。我尝试使用na.omit
参数,但出现错误
charToDate(x) 中的错误:字符串不在标准中 明确的格式”
这是我的脚本:
test <- read.csv(
file=paste0("testdata.csv"),
stringsAsFactors = FALSE)
test$Date <- as.Date(test$Date)
ggplot(na.omit(test), aes(x=Date, y=A))+
geom_line(na.rm=TRUE)+
xlab("") + ylab("A")+
(scale_x_date(breaks=date_breaks("1 month"),labels=date_format("%b")))+
scale_y_continuous(expand = c(0, 0), limits = c(28, 31))+
geom_point(shape=1)+
theme_bw()
除此之外,我还想在同一个图中创建第二个 y 轴。我使用了sec.axis
参数。该轴的数据也有NA
值。但是,由于脚本的第一部分有问题,我无法确认我的代码是否有效。这是附加代码:
geom_line(aes(y = B/20, colour ="B")) +
scale_y_continuous(expand=c(0,0), sec.axis = sec_axis(~.*20, bquote(B)))+
geom_point(shape=0)
这是我的一部分数据
Date | A | B |
---|---|---|
2020-09-23 | 28.2 | NA |
2020-09-30 | NA | 0.192 |
2020-10-01 | 28.4 | NA |
2020-10-07 | 28.6 | NA |
2020-10-14 | 28.8 | NA |
2020-10-21 | 28 | NA |
2020-10-28 | NA | 0.136 |
2020-11-01 | 28.5 | NA |
2020-11-04 | 27.6 | NA |
2020-11-11 | 27.9 | NA |
2020-11-18 | 27.9 | NA |
2020-11-25 | NA | 0.184 |
2020-12-01 | 28.1 | NA |
2020-12-02 | 28.4 | NA |
2020-12-09 | 29 | NA |
【问题讨论】:
【参考方案1】:我不确定这就是你想要的那部分数据B
有很多NA
。
评论:如果na.omit
对部分数据,没有任何剩余,所以我无法继续使用na.omit
。
test2 <- test %>% mutate(Date = as.Date(Date))
test3 <- test2 %>%
select(Date, A) %>%
na.omit
test3 %>%
mutate(Date = as.Date(Date)) %>%
ggplot(aes(x=Date, y=A))+
geom_line(na.rm=TRUE)+
xlab("") + ylab("A")+
(scale_x_date(breaks=date_breaks("1 month"),labels=date_format("%b")))+
scale_y_continuous(expand = c(0, 0), limits = c(28, 31))+
geom_point(shape=1)+
theme_bw() +
geom_line(data = test2, aes(x = Date,y = B/20, colour ="B")) +
scale_y_continuous(expand=c(0,0), sec.axis = sec_axis(~.*20, bquote(B)))+
geom_point(shape=0,data = test2,aes(y = B* 20, colour ="B"))
【讨论】:
嗨@Park!是的,数据只是更大数据集的一部分,所以有很多 NA。你知道我可以如何连接数据点,这样它们就不会只是点/不连续的吗? @okscientist 恐怕你不能让每个点都连续。我编辑我的代码以使A
连续以上是关于在 ggplot 中使用 NA 值创建连续折线图并添加辅助 y 轴的主要内容,如果未能解决你的问题,请参考以下文章
在折线图的特定位置添加点或点,并使用 ggplotly() 相应地调整工具提示
如何在 ggplot 等值线图中将 NA 颜色从灰色更改为白色?