plot(cars)

#install.packages("tidyverse")
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)
Here we can see that am is a numerical variable but in fact should be
a factor.
# 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)
#head(data_mtcars)
We changed the variable am to factor.
# 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 = "Miles Per Gallon vs Weight", x = "Weight (1000 lbs)", y = "Miles Per Gallon") # Add plot labels

Instead of weight be one important variable to understand the
spending of miles per gallon of a vehicle, I can see that the cylinders
are more important to determinate hoew much miles per gallon a car
spends.
#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

We can see that some part of index, probably high cylinder cars,
spend more gallons. However is a small percentage comparing to other
cylinders.
# 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

As higher the cylinder, higher the housepower
#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

This shows all of our conclusions from before are correct
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCgpgYGB7cn0KcGxvdChjYXJzKQpgYGAKCgoKYGBge3J9CiNpbnN0YWxsLnBhY2thZ2VzKCJ0aWR5dmVyc2UiKQpgYGAKCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKYGBgCgpgYGB7cn0KI2xpYnJhcnkoZ2dwbG90MikKYGBgCgoKCgpgYGB7cn0KIyBMb2FkIHRoZSBtdGNhcnMgZGF0YXNldCAoYnVpbHQgaW50byBSKQpkYXRhX210Y2FycyA8LSBtdGNhcnMKCiMgVmlldyB0aGUgZmlyc3QgZmV3IHJvd3MgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YQpoZWFkKGRhdGFfbXRjYXJzKQpgYGAKSGVyZSB3ZSBjYW4gc2VlIHRoYXQgYW0gaXMgYSBudW1lcmljYWwgdmFyaWFibGUgYnV0IGluIGZhY3Qgc2hvdWxkIGJlIGEgZmFjdG9yLgoKCmBgYHtyfQojIENvbnZlcnQgJ2FtJyAodHJhbnNtaXNzaW9uIHR5cGUpIGFuZCAnY3lsJyAobnVtYmVyIG9mIGN5bGluZGVycykgdG8gZmFjdG9ycyBmb3IgY2F0ZWdvcmljYWwgcGxvdHRpbmcKZGF0YV9tdGNhcnMkYW0gPC0gYXMuZmFjdG9yKGRhdGFfbXRjYXJzJGFtKQpkYXRhX210Y2FycyRjeWwgPC0gYXMuZmFjdG9yKGRhdGFfbXRjYXJzJGN5bCkKYGBgCgoKCgpgYGB7cn0KI2hlYWQoZGF0YV9tdGNhcnMpCmBgYAoKV2UgY2hhbmdlZCB0aGUgdmFyaWFibGUgYW0gdG8gZmFjdG9yLgoKYGBge3J9CiMgQ3JlYXRlIGEgc2NhdHRlciBwbG90IG9mIGNhciB3ZWlnaHQgdnMuIG1pbGVzIHBlciBnYWxsb24sIGNvbG9yZWQgYnkgY3lsaW5kZXIgY291bnQKZ2dwbG90KGRhdGFfbXRjYXJzLCBhZXMoeCA9IHd0LCB5ID0gbXBnLCBjb2xvciA9IGN5bCkpICsKICBnZW9tX3BvaW50KCkgKyAjIEFkZCBwb2ludHMgdG8gdGhlIHBsb3QKICBsYWJzKHRpdGxlID0gIk1pbGVzIFBlciBHYWxsb24gdnMgV2VpZ2h0IiwgeCA9ICJXZWlnaHQgKDEwMDAgbGJzKSIsIHkgPSAiTWlsZXMgUGVyIEdhbGxvbiIpICMgQWRkIHBsb3QgbGFiZWxzCmBgYAoKSW5zdGVhZCBvZiB3ZWlnaHQgYmUgb25lIGltcG9ydGFudCB2YXJpYWJsZSB0byB1bmRlcnN0YW5kIHRoZSBzcGVuZGluZyBvZiBtaWxlcyBwZXIgZ2FsbG9uIG9mIGEgdmVoaWNsZSwgSSBjYW4gc2VlIHRoYXQgdGhlIGN5bGluZGVycyBhcmUgbW9yZSBpbXBvcnRhbnQgdG8gZGV0ZXJtaW5hdGUgaG9ldyBtdWNoIG1pbGVzIHBlciBnYWxsb24gYSBjYXIgc3BlbmRzLgoKCmBgYHtyfQojQ3JlYXRlIGEgbGluZSBncmFwaCBvZiBvcmRlcmVkIG1wZyBieSB0aGUgcm93IG51bWJlci4KZGF0YV9tdGNhcnNfbGluZSA8LSBkYXRhX210Y2FycyAlPiUgbXV0YXRlKGluZGV4ID0gcm93X251bWJlcigpKSAjYWRkIGluZGV4IGNvbHVtbiBzbyB3ZSBjYW4gcGxvdCBpdAoKZ2dwbG90KGRhdGFfbXRjYXJzX2xpbmUsIGFlcyh4ID0gaW5kZXgsIHkgPSBtcGcpKSArCiAgZ2VvbV9saW5lKCkgKyAjIGFkZCBhIGxpbmUgdG8gdGhlIHBsb3QKICBsYWJzKHRpdGxlID0gIk1pbGVzIFBlciBHYWxsb24gYnkgSW5kZXgiLCB4ID0gIkluZGV4IiwgeSA9ICJNaWxlcyBQZXIgR2FsbG9uIikgIyBhZGQgcGxvdCBsYWJlbHMKYGBgCgpXZSBjYW4gc2VlIHRoYXQgc29tZSBwYXJ0IG9mIGluZGV4LCBwcm9iYWJseSBoaWdoIGN5bGluZGVyIGNhcnMsIHNwZW5kIG1vcmUgZ2FsbG9ucy4gSG93ZXZlciBpcyBhIHNtYWxsIHBlcmNlbnRhZ2UgY29tcGFyaW5nIHRvIG90aGVyIGN5bGluZGVycy4KCgpgYGB7cn0KIyBDcmVhdGUgYSBob3Jpem9udGFsIGJhciBjaGFydCBvZiB0aGUgYXZlcmFnZSBob3JzZXBvd2VyIGdyb3VwZWQgYnkgY3lsaW5kZXIgY291bnQKaHBfYnlfY3lsIDwtIGRhdGFfbXRjYXJzICU+JSBncm91cF9ieShjeWwpICU+JSBzdW1tYXJpemUoYXZnX2hwID0gbWVhbihocCkpICMgQ2FsY3VsYXRlIGF2ZXJhZ2UgaG9yc2Vwb3dlciBmb3IgZWFjaCBjeWxpbmRlciBncm91cAoKZ2dwbG90KGhwX2J5X2N5bCwgYWVzKHkgPSBjeWwsIHggPSBhdmdfaHApKSArCiAgZ2VvbV9iYXIoc3RhdCA9ICdpZGVudGl0eScpICsgIyBDcmVhdGUgYmFycyBiYXNlZCBvbiB0aGUgY2FsY3VsYXRlZCBhdmVyYWdlcwogIGxhYnModGl0bGUgPSAiQXZlcmFnZSBIUCBieSBDeWxpbmRlciBDb3VudCIsIHkgPSAiQ3lsaW5kZXIgQ291bnQiLCB4ID0gIkF2ZXJhZ2UgSG9yc2Vwb3dlciIpICMgQWRkIHBsb3QgbGFiZWxzCmBgYAoKQXMgaGlnaGVyIHRoZSBjeWxpbmRlciwgaGlnaGVyIHRoZSBob3VzZXBvd2VyCgoKYGBge3J9CiNDcmVhdGUgYSBzdGFja2VkIGJhciBjaGFydCBvZiBhdmVyYWdlIG1wZywgZGlzcCwgaHAsIGFuZCB3dCwgZ3JvdXBlZCBieSBjeWwuCmJhcl9kYXRhX210Y2FycyA8LSBkYXRhX210Y2FycyAlPiUgZ3JvdXBfYnkoY3lsKSAlPiUgc3VtbWFyaXplKG1wZyA9IG1lYW4obXBnKSwgZGlzcCA9IG1lYW4oZGlzcCksIGhwID0gbWVhbihocCksIHd0ID0gbWVhbih3dCkpICU+JSBwaXZvdF9sb25nZXIoY29scyA9IGMoIm1wZyIsICJkaXNwIiwgImhwIiwgInd0IiksIG5hbWVzX3RvID0gIk1lYXN1cmVtZW50IiwgdmFsdWVzX3RvID0gIkF2ZXJhZ2UiKSAjQ2FsY3VsYXRlIGF2ZXJhZ2UgdmFsdWVzIGZvciBlYWNoIG1lYXN1cmVtZW50LCBhbmQgcGl2b3QgdGhlIGRhdGEgaW50byBhIGxvbmcgZm9ybWF0LgoKZ2dwbG90KGJhcl9kYXRhX210Y2FycywgYWVzKHggPSBjeWwsIGZpbGwgPSBNZWFzdXJlbWVudCwgeSA9IEF2ZXJhZ2UpKSArCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIpICsgI0NyZWF0ZSBiYXJzIGJhc2VkIG9uIHRoZSBjYWxjdWxhdGVkIGF2ZXJhZ2VzCiAgbGFicyh0aXRsZSA9ICJBdmVyYWdlIE1lYXN1cmVtZW50cyBieSBDeWxpbmRlciBDb3VudCIsIHggPSAiQ3lsaW5kZXIgQ291bnQiLCB5ID0gIkF2ZXJhZ2UgTWVhc3VyZW1lbnQiKSAjYWRkIHBsb3QgbGFiZWxzCmBgYApUaGlzIHNob3dzIGFsbCBvZiBvdXIgY29uY2x1c2lvbnMgZnJvbSBiZWZvcmUgYXJlIGNvcnJlY3QK