在 R 中绘制分组日期值时出现问题
Problem while plotting in grouped date values in R
我试图绘制数据集中的最大值 x-axis = Date
和 y-axis = max_value
按站分组,就像我在这个 link 上找到的图片一样,但我想要制作 5 个地块(来自不同的站点)。
这是我的 df 样本:
df2 <- data.frame (Station = c(1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 10, 10, 10),
Date = c("1/1/2018", "2/1/2018", "3/1/2018","1/1/2018", "2/1/2018", "3/1/2018","1/1/2018", "2/1/2018", "3/1/2018","1/1/2018", "2/1/2018", "3/1/2018","1/1/2018", "2/1/2018", "3/1/2018"),
MAX_NO2 = c(55,52,58,76,98,12,14,23,54,76,90,99,43,32,76),
MAX_O3 = c(13,45,87,72,54,88,102,63,64,53,87,123,15,76,34))
这是我的代码:
library(tidyverse)
library(lubridate)
# your data
df2 %>%
# add date as date
mutate(date = ymd(Date)) %>%
# plot them
ggplot( aes(x = date, y = MAX_NO2 , color = Station==1, group = Station==1)) +
geom_line() + geom_point() + theme_test()
但这就是我正在绘制的(这是来自所有数据框,而不是样本):
其中蓝点是第 Nº1.That 站的最大值,这是我唯一想要绘制的东西,而不是同一绘图中的其他东西。地块1站1,地块2站2等
如评论中所述,在使用ggplot2
绘图之前删除其他站点是最简单的,这样您只保留需要绘图的数据。另外,为了转换日期,我认为您可能需要 dmy
或 mdy
而不是 ymd
(至少从您的样本数据来看)。
library(tidyverse)
library(lubridate)
df2 %>%
# add date as date
mutate(date = mdy(Date)) %>%
filter(Station == 1) %>%
# plot them
ggplot( aes(x = date, y = MAX_NO2 , color = Station, group = Station)) +
geom_line() +
geom_point() +
theme_test()
输出
您提供的data.frame与剧情不一致。但是,如果您想为 once.Not 处的每个站点获取不同的绘图,为每个站点调用不同的 ggplot,也许 facet_wrap()
函数(或 facet_grid()
)会有所帮助:
library(tidyverse)
library(lubridate)
df2 <- data.frame (Station = c(1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 10, 10, 10),
Date = c("1/1/2018", "2/1/2018", "3/1/2018","1/1/2018", "2/1/2018", "3/1/2018","1/1/2018", "2/1/2018", "3/1/2018","1/1/2018", "2/1/2018", "3/1/2018","1/1/2018", "2/1/2018", "3/1/2018"),
MAX_NO2 = c(55,52,58,76,98,12,14,23,54,76,90,99,43,32,76),
MAX_O3 = c(13,45,87,72,54,88,102,63,64,53,87,123,15,76,34))
df2 %>%
mutate(Station = as.character(Station)) %>%
ggplot(aes(x = Date, y = MAX_NO2, colour=Station, group=Station)) +
geom_line() + geom_point() + theme_test() +
facet_wrap(~Station)
我无法显示 SO2 的绘图,因为数据不同。另外注意ymd(date)
是错误的,应该是dmy(Date)
.
我试图绘制数据集中的最大值 x-axis = Date
和 y-axis = max_value
按站分组,就像我在这个 link 上找到的图片一样,但我想要制作 5 个地块(来自不同的站点)。
这是我的 df 样本:
df2 <- data.frame (Station = c(1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 10, 10, 10),
Date = c("1/1/2018", "2/1/2018", "3/1/2018","1/1/2018", "2/1/2018", "3/1/2018","1/1/2018", "2/1/2018", "3/1/2018","1/1/2018", "2/1/2018", "3/1/2018","1/1/2018", "2/1/2018", "3/1/2018"),
MAX_NO2 = c(55,52,58,76,98,12,14,23,54,76,90,99,43,32,76),
MAX_O3 = c(13,45,87,72,54,88,102,63,64,53,87,123,15,76,34))
这是我的代码:
library(tidyverse)
library(lubridate)
# your data
df2 %>%
# add date as date
mutate(date = ymd(Date)) %>%
# plot them
ggplot( aes(x = date, y = MAX_NO2 , color = Station==1, group = Station==1)) +
geom_line() + geom_point() + theme_test()
但这就是我正在绘制的(这是来自所有数据框,而不是样本):
其中蓝点是第 Nº1.That 站的最大值,这是我唯一想要绘制的东西,而不是同一绘图中的其他东西。地块1站1,地块2站2等
如评论中所述,在使用ggplot2
绘图之前删除其他站点是最简单的,这样您只保留需要绘图的数据。另外,为了转换日期,我认为您可能需要 dmy
或 mdy
而不是 ymd
(至少从您的样本数据来看)。
library(tidyverse)
library(lubridate)
df2 %>%
# add date as date
mutate(date = mdy(Date)) %>%
filter(Station == 1) %>%
# plot them
ggplot( aes(x = date, y = MAX_NO2 , color = Station, group = Station)) +
geom_line() +
geom_point() +
theme_test()
输出
您提供的data.frame与剧情不一致。但是,如果您想为 once.Not 处的每个站点获取不同的绘图,为每个站点调用不同的 ggplot,也许 facet_wrap()
函数(或 facet_grid()
)会有所帮助:
library(tidyverse)
library(lubridate)
df2 <- data.frame (Station = c(1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 10, 10, 10),
Date = c("1/1/2018", "2/1/2018", "3/1/2018","1/1/2018", "2/1/2018", "3/1/2018","1/1/2018", "2/1/2018", "3/1/2018","1/1/2018", "2/1/2018", "3/1/2018","1/1/2018", "2/1/2018", "3/1/2018"),
MAX_NO2 = c(55,52,58,76,98,12,14,23,54,76,90,99,43,32,76),
MAX_O3 = c(13,45,87,72,54,88,102,63,64,53,87,123,15,76,34))
df2 %>%
mutate(Station = as.character(Station)) %>%
ggplot(aes(x = Date, y = MAX_NO2, colour=Station, group=Station)) +
geom_line() + geom_point() + theme_test() +
facet_wrap(~Station)
我无法显示 SO2 的绘图,因为数据不同。另外注意ymd(date)
是错误的,应该是dmy(Date)
.