【发布时间】:2023-04-01 15:20:01
【问题描述】:
我正在处理数据库中的数据,这些数据经常刷新,我希望有一个时间范围的图形表示,当有良好的数据覆盖率时,将滞后版本更新为数据的实际日期上次刷新。
# data example
name <- c("DATA1", "DATA2", "DATA3")
start <- c("1988-01-01","1994-01-01", "1988-01-01")
end <- c("2013-12-31","2013-05-31","2014-03-31")
refresh <- c("2014-02-28","2013-07-25","2014-05-20")
mydata <- data.frame(name, start, end, refresh)
# data preview
mydata
name start end refresh
1 DATA1 1988-01-01 2013-12-31 2014-02-28
2 DATA2 1994-01-01 2013-05-31 2013-07-25
3 DATA3 1988-01-01 2014-03-31 2014-05-20
然后我重塑数据(我不确定这是否是绝对必要的:
library(ggplot2)
library(reshape)
mdata <- melt(mydata, measure.vars = c("start", "end", "refresh"))
到目前为止,我只设法像这样绘制开始 - 刷新日期:
ggplot(mdata, aes(as.Date(value, "%Y-%m-%d"), factor(name, levels=name))) +
geom_line(size=6) +
xlab("") + ylab("") +
theme_bw()
问题:
1:我似乎收到了很多警告信息,即
Warning messages:
1: In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels, :
duplicated levels in factors are deprecated
2: In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels, :
duplicated levels in factors are deprecated
3: In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels, :
duplicated levels in factors are deprecated
4: In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels, :
duplicated levels in factors are deprecated
2:我真正想要的是从头到尾有一个黑条和一个用于刷新的红条
附:我只使用factor位,因为我希望数据按照我原始表的顺序排序,否则它们将按表名的字母顺序排列(我的真实表名与此示例不同)。
【问题讨论】:
-
我也遇到过
Removed 1 rows containing missing values (geom_path).。但是,表格中有该项目的数据,但最终在图中显示为空白。