ggplot2图无法识别课程日期

时间:2018-12-07 11:00:28

标签: 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组成,其格式为 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类的对象

有人知道吗?

预先感谢

3 个答案:

答案 0 :(得分:0)

您的数据框[dependencies.winapi] version = "0.3" features = ["winuser"] 似乎只有两个变量samplesDates,但是在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轴上显示正确的日期。

欢呼