【发布时间】:2021-10-22 06:24:03
【问题描述】:
我正在尝试创建一个散点图,其中 x 轴为日期/时间,y 轴为盐度。但是,由于设备故障,有些日期/时间点没有盐度值,但我仍然需要这些时间部分显示在我的图表上,以帮助解释我正在查看的生态模式。谁能建议如何在图表上显示这些缺失的部分?
我当前的数据代码和未显示缺失值的绘图。
编辑 我的数据有明确的缺失值,其中数据由于记录器错误而被删除,但被列为“NA”(见图)。不幸的是,我每半小时收集数千个数据点,因此很难显示所有数据。
Screenshot of data showing 'NA' values
OY1_AllTimes <- read_csv("~/Documents/TAMUG_Thesis/Rollover_Pass_Data/Logger/RP_LoggerData_OY1_AllTimes.csv")
summary(OY1_AllTimes)
OY1_AllTimes$Date_time<-paste(OY1_AllTimes$Date, OY1_AllTimes$Time)
summary(OY1_AllTimes$Date_time)
date_time_OY1_AllTimes<-as.POSIXct(OY1_AllTimes$Date_time, format="%m/%d/%Y %H:%M")
date_time_OY1_AllTimes
date_time2_OY1_AllTimes<-as.factor(date_time_OY1_AllTimes)
date_time2_OY1_AllTimes
summary(OY1_AllTimes)
p_OY1_AllTimes <- ggplot(data = OY1_AllTimes, aes(x=date_time2_OY1_AllTimes, y=Salinity)) + geom_point() + theme_classic()+
scale_x_discrete("Date", breaks=c("0019-10-04 09:30:00", "0019-11-01 05:00:00", "0019-12-01 00:00:00", "0020-01-01 00:00:00", "0020-02-01 00:00:00",
"0020-03-01 00:00:00","0020-04-01 00:00:00", "0020-05-01 00:00:00", "0020-06-01 00:00:00"),
labels=c("10/2019", "11/2019", "12/2019", "1/2020", "2/2020", "3/2020", "4/2020", "5/2020", "6/2020"))+ylab("Salinity")+ggtitle("OY1")
p_OY1_AllTimes
Scatterplot of OY1 without missing values
基本上我希望看到上面的散点图,其中的间隙表示没有盐度数据的时期,以便日期/时间尺度是连续的。
数据的子样本:
# A tibble: 50 x 5
Site Date Time Salinity Date_time
<chr> <chr> <time> <dbl> <chr>
1 OY1 10/4/19 09:30 NA 10/4/19 09:30:00
2 OY1 10/4/19 10:00 NA 10/4/19 10:00:00
3 OY1 10/4/19 10:30 0.891 10/4/19 10:30:00
4 OY1 10/4/19 11:00 0.961 10/4/19 11:00:00
5 OY1 10/4/19 11:30 1.02 10/4/19 11:30:00
6 OY1 10/4/19 12:00 1.10 10/4/19 12:00:00
7 OY1 10/4/19 12:30 1.19 10/4/19 12:30:00
8 OY1 10/4/19 13:00 1.27 10/4/19 13:00:00
9 OY1 10/4/19 13:30 1.33 10/4/19 13:30:00
10 OY1 10/4/19 14:00 1.42 10/4/19 14:00:00
# … with 40 more rows```
【问题讨论】:
-
我认为您应该使用
date_time_OY1_AllTimes变量而不是转换后的因子版本,并删除scale_x_discrete。然后你应该得到一个基于底层时间戳的连续日期轴,而不是按顺序堆叠。 -
@JonSpring 不幸的是,这仍然会生成一个删除我所有“NA”数据的图表。我需要将这些显示为时间序列中的空白。
-
你能解释一下“将这些显示为间隙”是什么意思吗?这是否意味着您想要每个缺失点的轴上的文本?我原以为我下面的答案是“显示差距”,时间轴上有一个部分缺少点,但也许我还不明白。
-
@JonSpring 所以我想要你上面显示的内容,但是当我尝试这样做时,R 仍在删除我的缺失值的行并给我其他错误。我成功地为第一个图表运行了您的代码,但收到了警告消息:删除了包含缺失值 (geom_point) 的 3831 行。对于您的第二张图,我收到一个未使用的争论(data_labels =“%b\n'%y”)的错误。对于您的第三张图,我收到错误“中断”和“标签”必须具有相同的长度。
-
您看到的警告是因为您的数据在 ggplot 中用于 3831 行数据的至少一列中包含 NA。如果这是您所期望的,那可能会很好。如果您的
Date_time列不是日期时间数据(通常是 POSIXct),则可能会出现第二个错误。也许是性格或因素数据? (什么是str(OY1_AllTimes$Date_time))?在任何情况下,如果您可以在问题中包含代码形式的数据样本,那么提供帮助会更容易,如下所述:stackoverflow.com/questions/5963269/…
标签: r ggplot2 scatter-plot missing-data