“错误:无效输入:date_trans仅适用于类Date的对象”,同时尝试提供格式为“year-week”/“%Y-%W”的x轴的中断

时间:2018-03-06 16:21:28

标签: r ggplot2

我正在研究的主要问题是在我的情节的x轴上提供休息。 现在,我的x轴基于YYYY-WW格式的一年中的一周。

我尝试过使用ggplot2的不同方法。

似乎最有希望的是使用图书馆规模。

但是由于错误“错误:输入无效:date_trans仅适用于类Date的对象”,我现在陷入困境。

这是我的代码段:

library(ggplot2)
library(reshape2)
library(scales)
data4 <- read.csv("C:\\Users\\Shailesh\\Anaconda3\\Scripts\\4c.csv")


data4 <- melt(data4,  id.vars = c("WEEK.NUMBER", "CURRENT.WEEK.DEATHS", "PREVIOUS.WEEKS.DEATHS"), 
          measure.vars = c("CURRENT.WEEK.DEATHS", "PREVIOUS.WEEKS.DEATHS"))

head(data4)


ggplot(data4, aes(fill=variable, y=value, x=factor(WEEK.NUMBER)), color="black") + 
  geom_bar( stat="identity") +
  labs(x = "Week of Death", y="Number of Deaths") +
  scale_fill_manual(name = '', guide = 'legend',labels = c('Death Reported Previous Week', 'Death Reported Current Week'),
  values = c( "#00ffff","#009933")) +
  #scale_x_date(breaks = date_breaks("1 weeks"), labels = date_format("%Y-%W"))+
  theme(legend.position='bottom') + 
  theme( axis.text.x = element_text(angle = 90, hjust = 1, size =5))

以下是我到目前为止的情节(当我评论“scale_x_date(breaks = date_breaks(”1周“),labels = date_format(”%Y-%W“))”)时:

enter image description here

以下是融化后数据框的头部: enter image description here

如何解决此错误或如何解析x轴?

任何都会有所帮助!谢谢!

1 个答案:

答案 0 :(得分:1)

只需在 WEEK.NUMBER 中创建一个Date类型字段,然后将其传递到aes()来电的 x 。此外,您应该在{{id> id.vars 的{{{{em> id.vars 中省略冗余变量 CURRENT.WEEK.DEATHS PREVIOUS.WEEKS.DEATHS 。 1}}。

melt

或者,使用data4 <- melt(data4, id.vars = c("WEEK.NUMBER"), measure.vars = c("CURRENT.WEEK.DEATHS", "PREVIOUS.WEEKS.DEATHS")) data4$week_date <- as.Date(paste(data4$WEEK.NUMBER, 1, sep="-"), format="%Y-%W-%w")

transform

下面演示随机数据,播种的重复性, data4 正试图复制您的融化数据,涵盖2016年和2017年的最后几周。

data4 <- transform(melt(data4, id.vars=c("WEEK.NUMBER"), 
                        measure.vars=c("CURRENT.WEEK.DEATHS", "PREVIOUS.WEEKS.DEATHS")),
                   week_date = as.Date(paste(WEEK.NUMBER,1,sep="-"), format="%Y-%W-%w"))

GGPlot Output