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")
library(tidyverse) # Load the tidyverse package for data manipulation and visualization
── 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.4 ✔ tidyr 1.3.1
✔ purrr 1.0.4
── Conflicts ────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
library(ggplot2) # Load ggplot2 for creating plots
# 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
# Create a 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 = "Weight vs. Miles Per Gallon", x = "Weight (1000 lbs)", y = "Miles Per Gallon") # Add plot labels

Distribution showing miles per gallon and weight.
Weight doesn’t sem as factor while the lower the cylinder the more
miles per galon used.
Line Graph
#Create a 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() + # add a line to the plot
labs(title = "Miles Per Gallon by Index", x = "Index", y = "Miles Per Gallon") # add plot labels

Above the graph shows miles per gallon by row number.
Horizontal Bar Chart
# Create a 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

Horizontal bar chart displaying Cylinder count vs horse power. The
higher the cylinder count, the ligher the horsepower.
Stacked BAr Chart
#Create a 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

Horsepower and diplayment is directly proportional across the
cylinder count, while the miles per galon is nversely proportioned to
the cylinder count.
LS0tCnRpdGxlOiAibXRjYXJzIERhdGFzZXQgVmlzdWFsaXphdGlvbiIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKKipJbnRyb2R1Y3Rpb24qKgpJbiB0aGlzIGFzc2lnbm1lbnQsIHdlIGV4cGxvcmUgdGhlIG10Y2FycyBkYXRhc2V0LCB3aGljaCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB2YXJpb3VzIGNhciBtb2RlbHMuCgptcGc6IE1pbGVzIHBlciBnYWxsb24gKE51bWVyaWMpCgpjeWw6IE51bWJlciBvZiBjeWxpbmRlcnMgKE51bWVyaWMpCgpkaXNwOiBEaXNwbGFjZW1lbnQgTnVtZXJpYyBjdWJpYyAoaW5jaGVzKQoKaHA6IEdyb3NzIGhvcnNlcG93ZXIgTnVtZXJpYyAoaHApCgpkcmF0OiBSZWFyIGF4bGUgcmF0aW8gTnVtZXJpYyAocmF0aW8pCgp3dDogV2VpZ2h0IE51bWVyaWMgKDEwMDAgbGJzKQoKcXNlYzoxLzQgbWlsZSB0aW1lIE51bWVyaWMgKHNlY29uZHMpCgp2cyBWL1MgZW5naW5lICgwID0gVi1zaGFwZWQsIDEgPSBzdHJhaWdodCkgTnVtZXJpYyAoYmluYXJ5KQoKYW0gVHJhbnNtaXNzaW9uICgwID0gYXV0b21hdGljLCAxID0gbWFudWFsKSBOdW1lcmljIChiaW5hcnkpCgpnZWFyIE51bWJlciBvZiBmb3J3YXJkIGdlYXJzIE51bWVyaWMgKGdlYXJzKQoKY2FyYiBOdW1iZXIgb2YgY2FyYnVyZXRvcnMgTnVtZXJpYyAoY2FyYnVyZXRvcnMpCgpgYGB7cn0KI2luc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIpCmBgYAoKCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkgIyBMb2FkIHRoZSB0aWR5dmVyc2UgcGFja2FnZSBmb3IgZGF0YSBtYW5pcHVsYXRpb24gYW5kIHZpc3VhbGl6YXRpb24KbGlicmFyeShnZ3Bsb3QyKSAjIExvYWQgZ2dwbG90MiBmb3IgY3JlYXRpbmcgcGxvdHMKCiMgTG9hZCB0aGUgbXRjYXJzIGRhdGFzZXQgKGJ1aWx0IGludG8gUikKZGF0YV9tdGNhcnMgPC0gbXRjYXJzCgojIFZpZXcgdGhlIGZpcnN0IGZldyByb3dzIHRvIHVuZGVyc3RhbmQgdGhlIGRhdGEKaGVhZChkYXRhX210Y2FycykKYGBgCgoKCgpgYGB7cn0KIyBDb252ZXJ0ICdhbScgKHRyYW5zbWlzc2lvbiB0eXBlKSBhbmQgJ2N5bCcgKG51bWJlciBvZiBjeWxpbmRlcnMpIHRvIGZhY3RvcnMgZm9yIGNhdGVnb3JpY2FsIHBsb3R0aW5nCmRhdGFfbXRjYXJzJGFtIDwtIGFzLmZhY3RvcihkYXRhX210Y2FycyRhbSkKZGF0YV9tdGNhcnMkY3lsIDwtIGFzLmZhY3RvcihkYXRhX210Y2FycyRjeWwpCmBgYAoqKlNjYXR0ZXIgUGxvdCoqCgpgYGB7cn0KIyBDcmVhdGUgYSBzY2F0dGVyIHBsb3Qgb2YgY2FyIHdlaWdodCB2cy4gbWlsZXMgcGVyIGdhbGxvbiwgY29sb3JlZCBieSBjeWxpbmRlciBjb3VudApnZ3Bsb3QoZGF0YV9tdGNhcnMsIGFlcyh4ID0gd3QsIHkgPSBtcGcsIGNvbG9yID0gY3lsKSkgKwogIGdlb21fcG9pbnQoKSArICMgQWRkIHBvaW50cyB0byB0aGUgcGxvdAogIGxhYnModGl0bGUgPSAiV2VpZ2h0IHZzLiBNaWxlcyBQZXIgR2FsbG9uIiwgeCA9ICJXZWlnaHQgKDEwMDAgbGJzKSIsIHkgPSAiTWlsZXMgUGVyIEdhbGxvbiIpICMgQWRkIHBsb3QgbGFiZWxzCmBgYAoKRGlzdHJpYnV0aW9uIHNob3dpbmcgbWlsZXMgcGVyIGdhbGxvbiBhbmQgd2VpZ2h0LiAKCldlaWdodCBkb2Vzbid0IHNlbSBhcyBmYWN0b3Igd2hpbGUgdGhlIGxvd2VyIHRoZSBjeWxpbmRlciB0aGUgbW9yZSBtaWxlcyBwZXIgZ2Fsb24gdXNlZC4KCioqTGluZSBHcmFwaCoqCgpgYGB7cn0KI0NyZWF0ZSBhIGxpbmUgZ3JhcGggb2Ygb3JkZXJlZCBtcGcgYnkgdGhlIHJvdyBudW1iZXIuCmRhdGFfbXRjYXJzX2xpbmUgPC0gZGF0YV9tdGNhcnMgJT4lIG11dGF0ZShpbmRleCA9IHJvd19udW1iZXIoKSkgI2FkZCBpbmRleCBjb2x1bW4gc28gd2UgY2FuIHBsb3QgaXQKCmdncGxvdChkYXRhX210Y2Fyc19saW5lLCBhZXMoeCA9IGluZGV4LCB5ID0gbXBnKSkgKwogIGdlb21fbGluZSgpICsgIyBhZGQgYSBsaW5lIHRvIHRoZSBwbG90CiAgbGFicyh0aXRsZSA9ICJNaWxlcyBQZXIgR2FsbG9uIGJ5IEluZGV4IiwgeCA9ICJJbmRleCIsIHkgPSAiTWlsZXMgUGVyIEdhbGxvbiIpICMgYWRkIHBsb3QgbGFiZWxzCmBgYApBYm92ZSB0aGUgZ3JhcGggc2hvd3MgbWlsZXMgcGVyIGdhbGxvbiBieSByb3cgbnVtYmVyLgoKKipIb3Jpem9udGFsIEJhciBDaGFydCoqCmBgYHtyfQojIENyZWF0ZSBhIGhvcml6b250YWwgYmFyIGNoYXJ0IG9mIHRoZSBhdmVyYWdlIGhvcnNlcG93ZXIgZ3JvdXBlZCBieSBjeWxpbmRlciBjb3VudApocF9ieV9jeWwgPC0gZGF0YV9tdGNhcnMgJT4lIGdyb3VwX2J5KGN5bCkgJT4lIHN1bW1hcml6ZShhdmdfaHAgPSBtZWFuKGhwKSkgIyBDYWxjdWxhdGUgYXZlcmFnZSBob3JzZXBvd2VyIGZvciBlYWNoIGN5bGluZGVyIGdyb3VwCgpnZ3Bsb3QoaHBfYnlfY3lsLCBhZXMoeSA9IGN5bCwgeCA9IGF2Z19ocCkpICsKICBnZW9tX2JhcihzdGF0ID0gJ2lkZW50aXR5JykgKyAjIENyZWF0ZSBiYXJzIGJhc2VkIG9uIHRoZSBjYWxjdWxhdGVkIGF2ZXJhZ2VzCiAgbGFicyh0aXRsZSA9ICJBdmVyYWdlIEhQIGJ5IEN5bGluZGVyIENvdW50IiwgeSA9ICJDeWxpbmRlciBDb3VudCIsIHggPSAiQXZlcmFnZSBIb3JzZXBvd2VyIikgIyBBZGQgcGxvdCBsYWJlbHMKYGBgCkhvcml6b250YWwgYmFyIGNoYXJ0IGRpc3BsYXlpbmcgQ3lsaW5kZXIgY291bnQgdnMgaG9yc2UgcG93ZXIuIFRoZSBoaWdoZXIgdGhlIGN5bGluZGVyIGNvdW50LCB0aGUgbGlnaGVyIHRoZSBob3JzZXBvd2VyLgoKKipTdGFja2VkIEJBciBDaGFydCoqCmBgYHtyfQojQ3JlYXRlIGEgc3RhY2tlZCBiYXIgY2hhcnQgb2YgYXZlcmFnZSBtcGcsIGRpc3AsIGhwLCBhbmQgd3QsIGdyb3VwZWQgYnkgY3lsLgpiYXJfZGF0YV9tdGNhcnMgPC0gZGF0YV9tdGNhcnMgJT4lIGdyb3VwX2J5KGN5bCkgJT4lIHN1bW1hcml6ZShtcGcgPSBtZWFuKG1wZyksIGRpc3AgPSBtZWFuKGRpc3ApLCBocCA9IG1lYW4oaHApLCB3dCA9IG1lYW4od3QpKSAlPiUgcGl2b3RfbG9uZ2VyKGNvbHMgPSBjKCJtcGciLCAiZGlzcCIsICJocCIsICJ3dCIpLCBuYW1lc190byA9ICJNZWFzdXJlbWVudCIsIHZhbHVlc190byA9ICJBdmVyYWdlIikgI0NhbGN1bGF0ZSBhdmVyYWdlIHZhbHVlcyBmb3IgZWFjaCBtZWFzdXJlbWVudCwgYW5kIHBpdm90IHRoZSBkYXRhIGludG8gYSBsb25nIGZvcm1hdC4KCmdncGxvdChiYXJfZGF0YV9tdGNhcnMsIGFlcyh4ID0gY3lsLCBmaWxsID0gTWVhc3VyZW1lbnQsIHkgPSBBdmVyYWdlKSkgKwogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArICNDcmVhdGUgYmFycyBiYXNlZCBvbiB0aGUgY2FsY3VsYXRlZCBhdmVyYWdlcwogIGxhYnModGl0bGUgPSAiQXZlcmFnZSBNZWFzdXJlbWVudHMgYnkgQ3lsaW5kZXIgQ291bnQiLCB4ID0gIkN5bGluZGVyIENvdW50IiwgeSA9ICJBdmVyYWdlIE1lYXN1cmVtZW50IikgI2FkZCBwbG90IGxhYmVscwpgYGAKSG9yc2Vwb3dlciBhbmQgZGlwbGF5bWVudCBpcyBkaXJlY3RseSBwcm9wb3J0aW9uYWwgYWNyb3NzIHRoZSBjeWxpbmRlciBjb3VudCwgd2hpbGUgdGhlIG1pbGVzIHBlciBnYWxvbiBpcyBudmVyc2VseSBwcm9wb3J0aW9uZWQgdG8gdGhlIGN5bGluZGVyIGNvdW50LiAK