R &引用;错误:无效输入:日期“仅适用于类日期对象”;在尝试提供格式的x轴中断时“;“一年一周”/"E;%Y-%W“;
我正在研究的主要问题是在绘图的x轴上提供中断。 现在,我的x轴以一年中的一周为基础,格式为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
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))