我尝试了很多不同的日期格式,并通过论坛进行了浏览,但没有任何帮助。
我的代码很简单。我从数据库中吸取模拟结果,然后尝试使用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组成,其格式为 posixct ,还包含SALDO,其格式为 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")
我收到plot。从图中可以看到,x轴仅显示天数,但不显示正确的日期格式。如果我添加线 scale_x_date(date_labels =“%Y-%m-%d”) 我总是收到错误消息: 错误:输入无效:date_trans仅适用于Date类的对象
有人知道吗?
预先感谢
答案 0 :(得分:0)
您的数据框[dependencies.winapi]
version = "0.3"
features = ["winuser"]
似乎只有两个变量samples
和Dates
,但是在Values
部分中,您引用的是其他变量。
答案 1 :(得分:0)
让我们尝试将您的工作分成几部分,以便我们了解实际的问题所在。
首先:您的输入是什么样子?我不知道标准的日期时间MS SQL Server格式是什么样的,但是大多数SQL数据库对日期和完整的日期+时间对象都有不同的表示形式,因此我不确定您实际上是指哪种。您能发布一下df$FIX_DATE
外观的示例吗?
第二:转换是否按预期进行?您的dates
对象是什么样的?如果所有值均为NA
,则转换失败,或者某些值失败,或者其他错误。并且您按预期的那样最终data.frame
了吗?
仅查看您的错误消息,我会说samples
不包含“日期”列,但是我不知道为什么不会。因此,最好尝试看看它是否符合您的期望。
第三:也许绘图中有问题。我看不到您的ggplot调用有任何直接问题,但是如果您将其缩减,它是否可以工作?喜欢
ggplot(samples,aes(x=Dates, y=Values)) +
geom_point()
如果成功,请尝试将其他行一一恢复,看看失败之处。
然后,如果您已找到问题所在,则很有可能自己解决整个问题。或者您可以编辑您的问题,然后我可以完全回答。
答案 2 :(得分:0)
我终于解决了这个问题。
图书馆随时都在做!
library(anytime)
samples$Dates<-anydate(samples$Dates)
之后,ggplot在x轴上显示正确的日期。
欢呼