在 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折线图的问题

绘制多个组的嵌套分类值的折线图 (ggplot2)

如何在 ggplot 等值线图中将 NA 颜色从灰色更改为白色?

R语言ggplot2可视化:使用geom_line函数可视化折线图并自定义设置折线图的不同区间使用不同颜色

ggplot2折线图给出“geom_path:每个组只包含一个观察值。你需要调整组审美吗?”