r-ggplot2绘图无法识别上课日期



我尝试了很多不同的日期格式,并浏览了论坛,但都无济于事。

我的代码很简单。我正在从数据库中吸取模拟结果,然后尝试用ggplot绘制样本。遗憾的是,生成的绘图没有在x轴上显示正确的日期时间格式。这是我的示例代码:

df<-tryCatch(sqlQuery(myconn,sql),
warning=function(w){print("FAIL! (warning)");return(NA)},
error=function(e){print(paste("ERROR:",geterrmessage()));return(NA)})

数据帧df由两列FIX_DATE和SALDO组成,前者采用posixct格式,后者采用num形式。

现在我已经尝试了很多不同的日期格式转换,正如不同工作组所指出的那样,但都没有真正奏效。例如

dates<-as.Date(df$FIX_DATE)

library(lubridate)
dates<-ymd(df$FIX_DATE)

日期转换后:

samples <- data.frame(cbind(dates,df$SALDO))
colnames(samples) <-c("Dates","Values")

以及图

theme_set(theme_light())
ggplot(samples,aes(x=Dates, y=Values)) +
geom_point(color = "navajowhite2",
alpha = 0.5,
shape = 1,
stroke = 1) +
#geom_smooth(color="red") +
stat_summary(fun.y = "mean", geom = "line", size = 1, colour="indianred2") +
labs(title = "Monte-Carlo Szenarien", subtitle = "Darstellungsgitter in Jahren") +
labs(y = "Nominal-Cashflows", x="Zeit") +
theme(legend.position="none",
plot.background = element_blank(), 
panel.grid.major = element_line(color = "snow3"), 
panel.grid.minor = element_line(color = "snow2"), 
panel.border = element_blank(), 
axis.line.x = element_line(color = "black"),
axis.line.y = element_line(color = "black")) +
scale_y_continuous(name="Szenarien Nominal-Cashflows", limits=c(1E+06, 3E+06)) +
scale_x_date(date_labels = "%Y-%m-%d")

如果我删除线路

scale_x_date(date_labels = "%Y-%m-%d")

我明白情节了。如图所示,x轴只显示天数,而不是正确的日期格式。如果我添加行scale_x_date(date_labels="%Y-%m-%d"(我总是收到错误消息:错误:无效输入:date_trans仅适用于date类的对象

有人知道线索吗。

提前感谢

您的数据帧samples似乎只有两个变量DatesValues,但在aes部分中,您指的是其他变量。

让我们试着把你的工作分解开来,这样我们就可以看到实际的问题在哪里。

第一:你的输入到底是什么样子的?我不知道标准的datetime MS SQL server格式是什么样子的,但大多数SQL数据库对日期和完整日期+时间对象有不同的表示方式,所以我不确定你到底指的是哪一种。你能发布一个df$FIX_DATE的样本吗?

第二:转换是否按预期进行?您的dates-对象是什么样子的?如果所有值都是NA,则转换失败,或者某些值失败,或者其他值失败。你是最终的data.frame
看看你的错误消息,我会说samples不包含日期列,但我不知道为什么不包含。所以,试着看看这是否是你所期望的是件好事。

第三:也许策划有问题。我看不出你的ggplot调用有什么直接的问题,但如果你把它修剪掉,它会起作用吗?像

ggplot(samples,aes(x=Dates, y=Values)) +
geom_point()

如果成功的话,试着一条接一条地恢复其他行,看看哪里失败了。

然后,如果你已经找到了问题所在,你很可能自己就能解决整个问题。或者你可以编辑你的问题,然后我可以完全回答

我终于解决了这个问题。

图书馆随时都能做到!

library(anytime)
samples$Dates<-anydate(samples$Dates)

之后,ggplot在x轴上显示正确的日期。

干杯

最新更新