在r中用日期绘制时间序列图的问题
problem plotting time series graph in r with date
我需要绘制时间序列图,但事实证明我使用的数据非常具有挑战性。
理想情况下,我想要一个看起来像这样的图表:
但是我的是这样的:
我尝试了一系列不同的方法,但其中 none 有效。
可以找到数据集here and I'll attach a picture of what the dataset itself looks like:
我试过的一些代码包括
ggplot( aes(x=date, y=northEast)) +
geom_area(fill="#69b3a2", alpha=0.5) +
geom_line(color="#69b3a2") +
ylab("test") +
theme_ipsum()
ggplot(covidData2) +
geom_line(
mapping = aes(x = weekBeginning, y=northEast, group=northEast)
)
如有任何帮助,我们将不胜感激!
您需要在绘制之前整理数据。如果您查看数据框,所有“数字”列都已被解释为字符向量,因为列名是嵌套的,因此出现在前几行中。您需要合并这些并将它们转换为列名。然后,您需要将数字列转换为数字。最后,您需要解析日期,因为 ggplot 会将句点简单地读取为字符向量:
library(readxl)
library(lubridate)
library(ggplot2)
library(hrbrthemes)
wb <- read_xlsx(path.expand("~/covid.xlsx"), sheet = "Table 9")
df <- as.data.frame(wb)
df[1, 1] <- ""
for(i in 2:length(df)) {
if(is.na(df[1, i])) df[1, i] <- df[1, i - 1]
}
nms <- trimws(paste(df[1,], df[2,]))
df <- df[-c(1:2),]
names(df) <- nms
df <- df[sapply(df, function(x) !all(is.na(x)))]
df[-1] <- lapply(df[-1], as.numeric)
df <- head(df, -3)
df$Period <- dmy(substr(df$Period, 1, 10))
现在我们可以绘图了:
ggplot(df, aes(x = Period, y = `North East Rate`)) +
geom_area(fill = "#69b3a2", alpha=0.5) +
geom_line(color = "#69b3a2") +
ylab("Rate per 100,000") +
xlab("") +
theme_ipsum()
由 reprex package (v2.0.1)
于 2022-03-08 创建
我需要绘制时间序列图,但事实证明我使用的数据非常具有挑战性。
理想情况下,我想要一个看起来像这样的图表:
但是我的是这样的:
我尝试了一系列不同的方法,但其中 none 有效。
可以找到数据集here and I'll attach a picture of what the dataset itself looks like:
我试过的一些代码包括
ggplot( aes(x=date, y=northEast)) +
geom_area(fill="#69b3a2", alpha=0.5) +
geom_line(color="#69b3a2") +
ylab("test") +
theme_ipsum()
ggplot(covidData2) +
geom_line(
mapping = aes(x = weekBeginning, y=northEast, group=northEast)
)
如有任何帮助,我们将不胜感激!
您需要在绘制之前整理数据。如果您查看数据框,所有“数字”列都已被解释为字符向量,因为列名是嵌套的,因此出现在前几行中。您需要合并这些并将它们转换为列名。然后,您需要将数字列转换为数字。最后,您需要解析日期,因为 ggplot 会将句点简单地读取为字符向量:
library(readxl)
library(lubridate)
library(ggplot2)
library(hrbrthemes)
wb <- read_xlsx(path.expand("~/covid.xlsx"), sheet = "Table 9")
df <- as.data.frame(wb)
df[1, 1] <- ""
for(i in 2:length(df)) {
if(is.na(df[1, i])) df[1, i] <- df[1, i - 1]
}
nms <- trimws(paste(df[1,], df[2,]))
df <- df[-c(1:2),]
names(df) <- nms
df <- df[sapply(df, function(x) !all(is.na(x)))]
df[-1] <- lapply(df[-1], as.numeric)
df <- head(df, -3)
df$Period <- dmy(substr(df$Period, 1, 10))
现在我们可以绘图了:
ggplot(df, aes(x = Period, y = `North East Rate`)) +
geom_area(fill = "#69b3a2", alpha=0.5) +
geom_line(color = "#69b3a2") +
ylab("Rate per 100,000") +
xlab("") +
theme_ipsum()
由 reprex package (v2.0.1)
于 2022-03-08 创建