mtcars Dataset Visualization
Introduction
In this assignment, we explore the mtcars dataset, which contains information about various car models.
mpg: Miles per gallon (Numeric)
cyl: Number of cylinders (Numeric)
disp: Displacement Numeric cubic (inches)
hp: Gross horsepower Numeric (hp)
drat: Rear axle ratio Numeric (ratio)
wt: Weight Numeric (1000 lbs)
qsec:1/4 mile time Numeric (seconds)
vs V/S engine (0 = V-shaped, 1 = straight) Numeric (binary)
am Transmission (0 = automatic, 1 = manual) Numeric (binary)
gear Number of forward gears Numeric (gears)
carb Number of carburetors Numeric (carburetors)
install.packages("tidyverse")
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/sys_3.4.3.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/bit_4.6.0.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/ps_1.9.1.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/farver_2.1.2.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/labeling_0.4.3.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/RColorBrewer_1.1-3.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/viridisLite_0.4.3.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/rematch_2.0.0.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/askpass_1.2.1.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/bit64_4.6.0-1.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/prettyunits_1.2.0.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/processx_3.8.6.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/backports_1.5.0.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/generics_0.1.4.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/blob_1.3.0.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/DBI_1.3.0.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/tidyselect_1.2.1.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/withr_3.0.2.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/data.table_1.18.2.1.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/gtable_0.3.6.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/isoband_0.3.0.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/S7_0.2.1.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/scales_1.4.0.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/gargle_1.6.1.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/uuid_1.2-2.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/cellranger_1.1.0.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/curl_7.0.0.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/ids_1.0.1.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/rematch2_2.1.2.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/cpp11_0.5.3.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/pkgconfig_2.0.3.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/openssl_2.3.5.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/timechange_0.4.0.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/utf8_1.2.6.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/systemfonts_1.3.2.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/textshaping_1.0.5.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/clipr_0.8.0.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/crayon_1.5.3.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/vroom_1.7.0.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/tzdb_0.5.0.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/progress_1.2.3.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/callr_3.7.6.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/selectr_0.5-1.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/broom_1.0.12.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/conflicted_1.2.0.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/dbplyr_2.5.2.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/dplyr_1.2.0.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/dtplyr_1.3.3.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/forcats_1.0.1.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/ggplot2_4.0.2.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/googledrive_2.1.2.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/googlesheets4_1.1.2.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/haven_2.5.5.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/hms_1.1.4.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/httr_1.4.8.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/lubridate_1.9.5.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/modelr_0.1.11.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/pillar_1.11.1.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/purrr_1.2.1.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/ragg_1.5.2.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/readr_2.2.0.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/readxl_1.4.5.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/reprex_2.1.1.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/rstudioapi_0.18.0.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/rvest_1.0.5.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/tibble_3.3.1.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/tidyr_1.3.2.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/xml2_1.5.2.tar.gz'
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/tidyverse_2.0.0.tar.gz'
The downloaded source packages are in
‘/tmp/Rtmpcas1Hl/downloaded_packages’
Load the tidyverse package for data manipulation and visualization and ggplot2 for creating plots
Load the data
library(tidyverse)
library(ggplot2)
# Load the mtcars dataset (built into R)
data_mtcars <- mtcars
# View the first few rows to understand the data
head(data_mtcars)
Convert ‘am’ (transmission type) and ‘cyl’ (number of cylinders) to factors for categorical plotting
data_mtcars$am <- as.factor(data_mtcars$am)
data_mtcars$cyl <- as.factor(data_mtcars$cyl)
Scatter Plot of car weight vs. miles per gallon, colored by cylinder count
ggplot(data_mtcars, aes(x = wt, y = mpg, color = cyl)) +
geom_point() + # Add points to the plot
labs(title = "Miles Per Gallon vs. Weight", x = "Weight (1000 lbs)", y = "Miles Per Gallon") # Add plot labels
Line Graph of ordered mpg by the row number
data_mtcars_line <- data_mtcars %>% mutate(index = row_number()) #add index column so we can plot it
ggplot(data_mtcars_line, aes(x = index, y = mpg)) +
geom_line(color = "blue") + # Change the line color to blue
labs(title = "Miles Per Gallon by Index", x = "Index", y = "Miles Per Gallon") # add plot labels
Horizontal bar chart of the average horsepower grouped by cylinder count
hp_by_cyl <- data_mtcars %>% group_by(cyl) %>% summarize(avg_hp = mean(hp)) # Calculate average horsepower for each cylinder group
ggplot(hp_by_cyl, aes(y = cyl, x = avg_hp)) +
geom_bar(stat = 'identity') + # Create bars based on the calculated averages
labs(title = "Average HP by Cylinder Count", y = "Cylinder Count", x = "Average Horsepower") # Add plot labels
Stacked bar chart of average mpg, disp, hp, and wt, grouped by cyl
bar_data_mtcars <- data_mtcars %>% group_by(cyl) %>% summarize(mpg = mean(mpg), disp = mean(disp), hp = mean(hp), wt = mean(wt)) %>% pivot_longer(cols = c("mpg", "disp", "hp", "wt"), names_to = "Measurement", values_to = "Average") #Calculate average values for each measurement, and pivot the data into a long format.
ggplot(bar_data_mtcars, aes(x = cyl, fill = Measurement, y = Average)) +
geom_bar(stat = "identity") + #Create bars based on the calculated averages
labs(title = "Average Measurements by Cylinder Count", x = "Cylinder Count", y = "Average Measurement") #add plot labels
Conclusion
This document demonstrates various data visualization techniques such as scatter plot, line graph, horizontal bar chart and stacked bar chart, using a public sales dataset. Since the dataset is pretty clean we did not do any EDA. The implementation of the above graphs and charts was pretty easy, similar to Python environment.
In the scatter plot it is visible that cylinder is very influential predictor because the colors representing a cylinder are nicely grouped.
The graph displays the Miles Per Gallon (mpg) for each car in the dataset as a continuous blue line plotted against their sequential index order, revealing the fluctuations in fuel efficiency across the different observations.
Horizontal bar chart calculates the average horsepower and groups by cylinder count.
The stacked bar chart presents compares the average values of fuel efficiency, engine displacement, horsepower, and weight across cars categorized by their number of cylinders.