Load library tidyverse in order to access dplyr and ggplot2
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## âś” dplyr 1.1.4 âś” readr 2.1.5
## âś” forcats 1.0.0 âś” stringr 1.5.1
## âś” ggplot2 3.5.1 âś” tibble 3.2.1
## âś” lubridate 1.9.3 âś” tidyr 1.3.1
## âś” purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## âś– dplyr::filter() masks stats::filter()
## âś– dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
The source for this dataset is the New York State Department of Conservation and the National Weather Service of 1973 for five months from May to September recorded daily.
Because airquality is a pre-built dataset, we can write it to our data directory to store it for later use.
data("airquality")
In the global environment, click on the row with the airquality dataset and it will take you to a “spreadsheet” view of the data.
The function, head, will only disply the first 6 rows of the dataset. Notice in the global environment to the right, there are 153 observations (rows)
head(airquality)
## Ozone Solar.R Wind Temp Month Day
## 1 41 190 7.4 67 5 1
## 2 36 118 8.0 72 5 2
## 3 12 149 12.6 74 5 3
## 4 18 313 11.5 62 5 4
## 5 NA NA 14.3 56 5 5
## 6 28 NA 14.9 66 5 6
Notice that all the variables are classified as either integers or continuous values .
If you want to look at specific statistics, here are some variations on coding. Here are 2 different ways to calculate “mean.”
mean(airquality$Temp)
## [1] 77.88235
mean(airquality[,4])
## [1] 77.88235
For the second way to calculate the mean, the matrix [row,column] is looking for column #4, which is the Temp column and we use all rows
#median
median(airquality$Temp)
## [1] 79
#standard deviation
sd(airquality$Temp)
## [1] 9.46527
# variance
var(airquality$Temp)
## [1] 89.59133
Sometimes we prefer the months to be numerical, but here, we need them as the month names. There are MANY ways to do this. Here is one way to convert numbers 5 - 9 to May through September
airquality$Month[airquality$Month == 5]<- "May"
airquality$Month[airquality$Month == 6]<- "June"
airquality$Month[airquality$Month == 7]<- "July"
airquality$Month[airquality$Month == 8]<- "August"
airquality$Month[airquality$Month == 9]<- "September"
This is one way to reorder the Months so they do not default to alphabetical (you will see another way to reorder DIRECTLY in the chunk that creates the plot below in Plot #1
airquality$Month<-factor(airquality$Month,
levels=c("May", "June","July", "August",
"September"))
Here is a first attempt at viewing a histogram of temperature by the months May through September. We will see that temperatures increase over these months. The median temperature appears to be about 75 degrees.
fill = Month colors the histogram by months between May - Sept.
scale_fill_discrete(name = “Month”…) provides the month names on the right side as a legend in chronological order. This is a different way to order than what was shown above.
labs allows us to add a title, axes labels, and a caption for the data source
p1 <- airquality |>
ggplot(aes(x=Temp, fill=Month)) +
geom_histogram(position="identity")+
scale_fill_discrete(name = "Month",
labels = c("May", "June","July", "August", "September")) +
labs(x = "Monthly Temperatures from May - Sept",
y = "Frequency of Temps",
title = "Histogram of Monthly Temperatures from May - Sept, 1973",
caption = "New York State Department of Conservation and the National Weather Service") #provide the data source
p1
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Is this plot useful in answering questions about monthly temperature values? Explain # No not really, because when i look at this graph i see all the colors and it looks like pixels. they colors are really bright and i understand that it means each month but i do not think this was the best way to present this information so no i do not believe it is useful.
Outline the bars in white using the color = “white” command
Use alpha to add some transparency (values between 0 and 1)
Change the binwidth
Add some transparency and white borders around the histogram bars.
p2 <- airquality |>
ggplot(aes(x=Temp, fill=Month)) +
geom_histogram(position="identity", alpha=0.5, binwidth = 5, color = "white")+
scale_fill_discrete(name = "Month", labels = c("May", "June","July", "August", "September")) +
labs(x = "Monthly Temperatures from May - Sept",
y = "Frequency of Temps",
title = "Histogram of Monthly Temperatures from May - Sept, 1973",
caption = "New York State Department of Conservation and the National Weather Service")
p2
Here July stands out for having high frequency of 85 degree temperatures. The dark purple color indicates overlaps of months due to the transparency.
We can see that August has the highest temperatures based on the boxplot distribution.
p3 <- airquality |>
ggplot(aes(Month, Temp, fill = Month)) +
labs(x = "Months from May through September", y = "Temperatures",
title = "Side-by-Side Boxplot of Monthly Temperatures",
caption = "New York State Department of Conservation and the National Weather Service") +
geom_boxplot() +
scale_fill_discrete(name = "Month", labels = c("May", "June","July", "August", "September"))
p3
Note the points above and below the boxplots in June and July. They are outliers.
Now make one new plot on your own, that is meaningfully different from the 3 I have shown you. You can select any of the variables in this dataset. Be sure to explore the dataset to see which variables are included that we have not explored yet. You may create a scatterplot, histogram, boxplot, or something else.
Be sure to include a title, axes labels, colors, and caption for the datasource in your Plot 4.
p4 <- airquality |>
ggplot(aes(x = Solar.R, y = Temp, fill = Month)) +
geom_tile( width = 10, height = 2, alpha = 0.7, color = "black") + # Create the heatmap
labs(
x = "Solar Radiation",
y = "Temperature",
title = "Scatterplot of Solar Radiation vs. Temperature by Month",
caption = "New York State Department of Conservation and the National Weather Service"
) +
theme_minimal()
p4
## Warning: Removed 7 rows containing missing values or values outside the scale range
## (`geom_tile()`).
Then, write a brief essay here:
For this plot, I chose to create a scatterplot to dive into the relationship between the Solar Radiation and Temperature using data from the airquality dataset. The dataset contains six variables; I focused on three of the six variables Solar Radiation (Solar.R), Temperature (Temp), and Month. I was particularly interested in Solar.R because it represents the amount of solar radiation in Langleys, measured between 0800 and 1200 hours at Central Park, which I found intriguing. I thought there might be a correlation between solar radiation and temperature, as higher radiation is generally associated with warmer temperatures. In addition to comparing the Solar Radiation to Temperature, I broke the data down by months (May, June, July, August, and September) too. This allowed me to see if there was any patterns between solar radiation and temperature.
As I can see there is a general pattern where higher solar radiation corresponds to higher temperatures, which makes sense since solar radiation is a factor which influences the temperature. The months differentiated through color also reveal the relationship between these two variables.
For the color choices, I didn’t choose anything special. I used a semi-transparent fill (alpha = 0.7) on the graph to help make the overlapping blocks more visible. I also outlined each tile in black to define the boundaries of each block more clearly, making it easier to see the structure of the plot. I made these choices to make the visualization better aand allow for easier interpretation. Additionally, I adjusted the width and height of the tiles of each individual block. Before, the blocks were too small to make sense of, so increasing their size helped make the plot more readable and visually accessible.