按日期顺序绘制数据
Plotting data in order of date
目的是在r中绘制历史情节。使用以下数据
date new_cases
1 22/01/2020 NA
2 23/01/2020 0
3 24/01/2020 1
4 25/01/2020 0
5 26/01/2020 3
6 27/01/2020 0
7 28/01/2020 0
8 29/01/2020 1
9 30/01/2020 0
10 31/01/2020 2
... etc.
我从来没有这样画过,我唯一知道的就是用
plot(data$new_cases)
但肯定有更美观的方式来做到这一点?
谢谢
在 base R 中,您可以使用 as.Date
将日期列转换为 date
(如上所述)。然后,您可以绘制图表并为其添加标签。
df$date <- as.Date(df$date, "%d/%m/%Y")
plot(new_cases ~ date, df, xaxt = "n", type = "l")
axis(1, df$date, format(df$date, "%d/%m/%Y"), cex.axis = .7)
另一种选择是使用 tidyverse
并转换日期,然后通过管道输入 ggplot2
:
library(tidyverse)
df %>%
mutate(date = as.Date(date, format = "%d/%m/%Y")) %>%
ggplot(aes(date,new_cases)) +
geom_line()
或者如果你只是想要积分,那么你可以按照@Dave2e的建议去做:
df$date <- as.Date(df$date, "%d/%m/%Y")
plot(x=df$date, y=df$new_cases)
出于完整性考虑,date
是一个糟糕且有潜在危险的变量名称,我的结果导致命名空间冲突,因为 date
对应于基函数和 lubridate
函数。使用此数据时,我建议您将列重命名为 case_date
或同等名称。
另外,如果您使用 tidyverse
you may want to explore lubridate
, which is part of tidyverse
。
# pasted_data <- read.delim(pipe("pbpaste"))
library("tidyverse")
library("tidyr")
library("lubridate")
pasted_data %>%
separate(
col = 1,
sep = "\s+",
into = c("col_ind", "case_date", "cases"),
convert = TRUE
) %>%
mutate(case_date = dmy(case_date)) %>%
ggplot(aes(x = case_date, y = cases)) +
geom_line()
为了后代,以可用格式粘贴,数据应分为不同的列。而在 tidyverse
中,这可以使用 tidy::separate
.
来实现
目的是在r中绘制历史情节。使用以下数据
date new_cases
1 22/01/2020 NA
2 23/01/2020 0
3 24/01/2020 1
4 25/01/2020 0
5 26/01/2020 3
6 27/01/2020 0
7 28/01/2020 0
8 29/01/2020 1
9 30/01/2020 0
10 31/01/2020 2
... etc.
我从来没有这样画过,我唯一知道的就是用
plot(data$new_cases)
但肯定有更美观的方式来做到这一点? 谢谢
在 base R 中,您可以使用 as.Date
将日期列转换为 date
(如上所述)。然后,您可以绘制图表并为其添加标签。
df$date <- as.Date(df$date, "%d/%m/%Y")
plot(new_cases ~ date, df, xaxt = "n", type = "l")
axis(1, df$date, format(df$date, "%d/%m/%Y"), cex.axis = .7)
另一种选择是使用 tidyverse
并转换日期,然后通过管道输入 ggplot2
:
library(tidyverse)
df %>%
mutate(date = as.Date(date, format = "%d/%m/%Y")) %>%
ggplot(aes(date,new_cases)) +
geom_line()
或者如果你只是想要积分,那么你可以按照@Dave2e的建议去做:
df$date <- as.Date(df$date, "%d/%m/%Y")
plot(x=df$date, y=df$new_cases)
出于完整性考虑,date
是一个糟糕且有潜在危险的变量名称,我的结果导致命名空间冲突,因为 date
对应于基函数和 lubridate
函数。使用此数据时,我建议您将列重命名为 case_date
或同等名称。
另外,如果您使用 tidyverse
you may want to explore lubridate
, which is part of tidyverse
。
# pasted_data <- read.delim(pipe("pbpaste"))
library("tidyverse")
library("tidyr")
library("lubridate")
pasted_data %>%
separate(
col = 1,
sep = "\s+",
into = c("col_ind", "case_date", "cases"),
convert = TRUE
) %>%
mutate(case_date = dmy(case_date)) %>%
ggplot(aes(x = case_date, y = cases)) +
geom_line()
为了后代,以可用格式粘贴,数据应分为不同的列。而在 tidyverse
中,这可以使用 tidy::separate
.