缺少日期的数据可视化

时间:2014-12-03 14:37:34

标签: r ggplot2 visualization data-visualization

我有2张图(如下所示)。它们显示白天的平均等待时间。时间跨度从8月1日到10月30日,但我们整个九月都没有。

我认为这些图表具有误导性,但不确定处理此问题的“最佳做法”是什么。我应该将图表拆分为2吗?一个用于八月,一个用于十月?

另一种可能性是在9月份的所有日期中加零?

enter image description here enter image description here

1 个答案:

答案 0 :(得分:4)

如果你能以某种方式避免绘制不存在的数据,那将是最好的。有时会给人一种错误的印象。我个人不同意@ g-grothendieck关于第二个情节的评论,但这只是从美学的角度来看。九月确实没有分数,但这条线有点误导。

为避免在图表中绘制点,您应将其设置为NAggplot然后会忽视它们。下面是一个如何实现它的例子:

library(ggplot2)
# The 4 lines below create your data.frame
# This is the vector of all your dates
x=seq(from=as.Date('2014-08-01'),to=as.Date('2014-10-30'),by='1 day')

# this is your original data.frame
df=data.frame(DAY=x, P1=runif(length(x)), P2=runif(length(x)), P3=runif(length(x)))
# and there are no lines inside this date-range
df<-df[df$DAY<='2014-08-29' | df$DAY>='2014-09-28',]

#If you create another data.frame with a left join across al dates, you would get NAs in the missing dates.
df.2<-merge(data.frame(DAY=x),df, by='DAY',all.x=TRUE)
ggplot(df.2,aes(DAY,P1))+geom_line()

绘图,会产生这种效果:

enter image description here

这不一定是最好的方法,但我认为它更清洁。没有数据,意味着没有数据点。

由于