Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R &引用;错误:无效输入:日期“仅适用于类日期对象”;在尝试提供格式的x轴中断时“;“一年一周”/"E;%Y-%W“;_R_Ggplot2 - Fatal编程技术网

R &引用;错误:无效输入:日期“仅适用于类日期对象”;在尝试提供格式的x轴中断时“;“一年一周”/"E;%Y-%W“;

R &引用;错误:无效输入:日期“仅适用于类日期对象”;在尝试提供格式的x轴中断时“;“一年一周”/"E;%Y-%W“;,r,ggplot2,R,Ggplot2,我正在研究的主要问题是在绘图的x轴上提供中断。 现在,我的x轴以一年中的一周为基础,格式为YYYY-WW 我使用ggplot2尝试了不同的方法 一个似乎最有希望的方法是使用图书馆的天平 但是现在我被错误卡住了 “错误:无效输入:date_trans仅适用于类date的对象” 以下是我的代码片段: library(ggplot2) library(reshape2) library(scales) data4 <- read.csv("C:\\Users\\Shailesh\\Anacond

我正在研究的主要问题是在绘图的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))

以下是熔化后数据帧的头部:

如何解决此错误,如何中断x轴


任何人都会有帮助的!谢谢

只需从WEEK.NUMBER创建一个
Date
类型字段,并将其传递到
aes()调用的x中。另外,您应该在
melt
的id.vars中省略多余变量CURRENT.WEEK.DEATHS和PREVIOUS.WEEK.DEATHS

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")
下面用随机数据进行演示,为再现性设定种子,其中data4试图复制2016年和2017年最后几周的融化数据

library(ggplot2)
library(scales)

set.seed(306)
data4 <- data.frame(WEEK.NUMBER = as.vector(outer(2016:2017, 40:52, 
                                                  function(x,y) paste(x, y, sep="-"))),
                    variable = c(rep("CURRENT.WEEK.DEATHS", 26), 
                                 rep("PREVIOUS.WEEK.DEATHS", 26)),
                    value = sample(0:5, 52, replace = TRUE), stringsAsFactors = FALSE)

# NEW DATE VARIABLE
data4$week_date <- as.Date(paste(data4$WEEK.NUMBER, 1, sep="-"), format="%Y-%W-%w")

ggplot(data4, aes(fill=variable, y=value, x=week_date), 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))
库(ggplot2)
图书馆(比例尺)
种子集(306)

数据4谢谢你令人惊讶的准确答案。非常感谢您的时间和努力!!没问题。很乐意帮忙。快乐编码!
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"))
library(ggplot2)
library(scales)

set.seed(306)
data4 <- data.frame(WEEK.NUMBER = as.vector(outer(2016:2017, 40:52, 
                                                  function(x,y) paste(x, y, sep="-"))),
                    variable = c(rep("CURRENT.WEEK.DEATHS", 26), 
                                 rep("PREVIOUS.WEEK.DEATHS", 26)),
                    value = sample(0:5, 52, replace = TRUE), stringsAsFactors = FALSE)

# NEW DATE VARIABLE
data4$week_date <- as.Date(paste(data4$WEEK.NUMBER, 1, sep="-"), format="%Y-%W-%w")

ggplot(data4, aes(fill=variable, y=value, x=week_date), 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))