Мне нужно построить среднюю месячную температуру и сократить месяц по оси x, и мне нужно добавить 95% доверительные интервалы, но не знаю, как это сделать. Любые визуальные эффекты CI были бы хороши.
Тогда мне нужно построить
Я разделил Date...Time
на отдельные столбцы, но я не могу заставить ось X отображать сокращенный месяц с month.abb
в ggplot
.
Мне был предоставлен следующий набор данных (сокращенный для stackflow):
# Data
CleanTempSal = data.frame(
stringsAsFactors = F,
Date...Time = c(
"1/31/2017 20:00",
"1/31/2017 21:00",
"1/31/2017 22:00",
"1/31/2017 23:00",
"2/1/2017 0:00",
"2/1/2017 1:00",
"2/1/2017 2:00",
"2/1/2017 3:00",
"3/21/2017 10:00",
"3/21/2017 11:00",
"3/21/2017 12:00",
"3/21/2017 13:00"),
Temp..C. = c(14.87, 14.77, 15.08, 15.08,
14.96, 14.87, 15.05, 15.05,
18.87, 19.32, 19.97, 20.44),
Salinity.psu. = c(14.58, 14.52, 14.44, 14.46,
14.56, 14.67, 14.78, 14.88,
18.78, 18.81, 19.41, 19.16),
Conduc.mS.cm. = c(19.33, 19.21, 19.26, 19.28,
19.34, 19.44, 19.66, 19.78,
26.67, 26.96, 28.14, 28.09)
)
Date...Time Temp..C. Salinity.psu. Conduc.mS.cm.
1/31/2017 20:00 14.87 14.58 19.33
1/31/2017 21:00 14.77 14.52 19.21
1/31/2017 22:00 15.08 14.44 19.26
1/31/2017 23:00 15.08 14.46 19.28
2/1/2017 0:00 14.96 14.56 19.34
2/1/2017 1:00 14.87 14.67 19.44
2/1/2017 2:00 15.05 14.78 19.66
2/1/2017 3:00 15.05 14.88 19.78
3/21/2017 10:00 18.87 18.78 26.67
3/21/2017 11:00 19.32 18.81 26.96
3/21/2017 12:00 19.97 19.41 28.14
3/21/2017 13:00 20.44 19.16 28.09
И код.
library(tidyverse)
library(ggplot2)
library(lubridate)
# convert date column to date class
CleanTempSal$Date...Time <- as.POSIXct(CleanTempSal$Date...Time, format = "%m/%d/%y %H:%M")
#Add Month Column to data set
CleanTempSal <- CleanTempSal %>% mutate(month = month(Date...Time))
CleanTempSal <- CleanTempSal %>% mutate(month2 = month.abb[month])
CleanTempSal <- CleanTempSal %>% mutate(year = year(Date...Time))
CleanTempSal <- CleanTempSal %>% mutate(hour = hour(Date...Time))
#group by month and take the mean of that month
a <- CleanTempSal %>%
group_by(month) %>%
summarise(month_mean = mean(Temp..C.))
#plot mean monthly temp
ggplot(a, aes(month, month_mean)) +
geom_point(aes(color = month_mean)) +
geom_line(aes(color = month_mean)) +
scale_color_gradient("Temp", low = "blue", high = "red4") +
labs(x = "Month of 2017",
y = "Water Tempearture (C)",
title = "Monthy Mean Water Temperature",
subtitle = "NCBS Dock - Cedar Key, FL")
дает мне это
Предоставленные данные не дадут такой же график, поскольку я сократил его для простоты. Это даст только первые 3 месяца, и средства будут разными, но достигнуть тех же целей.
%m/%d/%Y %H:%M
преобразовать дату / время, заглавную букву «Y», так как год - это 4 цифры, а не 2. - person Ben   schedule 29.03.2020