按月绘制最低和最高温度

时间:2019-08-11 20:35:56

标签: r ggplot2

我对使用R非常陌生。我想创建一个堆叠的条形图,以显示温度读数<38C或> = 38C随时间变化的比例。

Date    Temperature (C) 
10/22/18 8:00   36.8
10/22/18 12:00  36.8
10/22/18 16:00  36.8
10/23/18 12:00  36.8
10/30/18 16:00  36.8
10/22/18 0:00   36.9
10/29/18 20:00  36.9
10/31/18 8:00   36.9
10/18/18 4:00   37
10/20/18 20:00  37
10/21/18 20:00  37
10/30/18 4:00   37
6/15/18 20:00   36.7
6/16/18 4:00    37
6/16/18 8:00    37.1
6/16/18 12:00   37.1
6/16/18 16:00   37.1
6/16/18 0:00    37.4
4/27/18 20:00   36.4
4/28/18 0:00    36.5
4/28/18 4:00    36.5
4/27/18 18:00   36.7
4/28/18 8:00    36.8
7/31/18 0:00    36.6
8/1/18 4:00     36.6
7/31/18 8:00    36.8
7/31/18 12:00   36.8
7/31/18 16:00   36.8
8/1/18 8:00     36.8
7/30/18 20:00   36.9
7/31/18 4:00    36.9

我尝试了各种不同的代码,但是它们似乎运行不佳。这是我最近尝试过的。

ggplot(master, aes(event, mastertemps)) + 
 geom_line() + 
 ylim(c(0, 1)) + 
 xlab("") + 
 ylab("Temperature") + 
 scale_x_date(date_breaks = "1 month", date_labels = "%b %y") + 
 theme(axis.text.x = element_text(angle = 90, hjust = 1)) + 
 ggtitle("2018 Temperatures")

这是我运行此程序时收到的错误消息

  

“无效的输入:date_trans仅适用于Date类的对象”

我想要一个看起来与此相似的情节:

max and min temperature per month

1 个答案:

答案 0 :(得分:0)

根据您提供的样本数据绘制每日的最小值-最大值很困难:

library(tidyverse)
dat <- read.csv("test.csv") # stored your sample data as a csv

dat <- dat %>% mutate(date = as.Date(Date, format="%m/%d/%y %H:%M")) # new variable in Date class

d2 <- dat %>% group_by(date) %>% summarise(min = min(Temperature), max = max(Temperature)) # new variables with min and max daily temperature

d2 <- d2 %>% gather(var, val, -date) # change the data to long format


ggplot(d2, aes(date, val, colour=var)) + geom_line() + geom_point() # plot

enter image description here

要以每月最小-最大格式绘制每日图表:

d3 <- dat %>% 
  mutate(date = as.Date(Date, format="%m/%d/%y %H:%M")) %>% 
  mutate(month = format(date, "%m")) 

d3 <- d3 %>% group_by(month) %>%  summarise(min = min(Temperature), max = max(Temperature))

d3 <- d3 %>% gather(var, val, -month)

d3$month <- as.numeric(d3$month)

ggplot(d3,aes(month, val, colour=var)) + 
  geom_line() + 
  geom_point() + 
  scale_x_continuous("Month", breaks=seq(4, 10, 2), labels=c("Apr", "Jun", "Aug", "Oct")) +
  ylab("Temperature")

enter image description here