plot(cars)


data(package = .packages(all.available = TRUE))

#install.packages("tidyverse")

library(tidyverse) # Load the tidyverse package for data manipulation and visualization
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)

# 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


#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

# 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

NA
NA

#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

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCgpgYGB7cn0KcGxvdChjYXJzKQpgYGAKCgoKYGBge3J9CgpkYXRhKHBhY2thZ2UgPSAucGFja2FnZXMoYWxsLmF2YWlsYWJsZSA9IFRSVUUpKQpgYGAKCmBgYHtyfQoKI2luc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIpCgpgYGAKCmBgYHtyfQoKbGlicmFyeSh0aWR5dmVyc2UpICMgTG9hZCB0aGUgdGlkeXZlcnNlIHBhY2thZ2UgZm9yIGRhdGEgbWFuaXB1bGF0aW9uIGFuZCB2aXN1YWxpemF0aW9uCmxpYnJhcnkoZ2dwbG90MikgIyBMb2FkIGdncGxvdDIgZm9yIGNyZWF0aW5nIHBsb3RzCgojIExvYWQgdGhlIG10Y2FycyBkYXRhc2V0IChidWlsdCBpbnRvIFIpCmRhdGFfbXRjYXJzIDwtIG10Y2FycwoKIyBWaWV3IHRoZSBmaXJzdCBmZXcgcm93cyB0byB1bmRlcnN0YW5kIHRoZSBkYXRhCmhlYWQoZGF0YV9tdGNhcnMpCmBgYAoKCgpgYGB7cn0KIyBDb252ZXJ0ICdhbScgKHRyYW5zbWlzc2lvbiB0eXBlKSBhbmQgJ2N5bCcgKG51bWJlciBvZiBjeWxpbmRlcnMpIHRvIGZhY3RvcnMgZm9yIGNhdGVnb3JpY2FsIHBsb3R0aW5nCmRhdGFfbXRjYXJzJGFtIDwtIGFzLmZhY3RvcihkYXRhX210Y2FycyRhbSkKZGF0YV9tdGNhcnMkY3lsIDwtIGFzLmZhY3RvcihkYXRhX210Y2FycyRjeWwpCgoKYGBgCgoKYGBge3J9CgojIENyZWF0ZSBhIHNjYXR0ZXIgcGxvdCBvZiBjYXIgd2VpZ2h0IHZzLiBtaWxlcyBwZXIgZ2FsbG9uLCBjb2xvcmVkIGJ5IGN5bGluZGVyIGNvdW50CmdncGxvdChkYXRhX210Y2FycywgYWVzKHggPSB3dCwgeSA9IG1wZywgY29sb3IgPSBjeWwpKSArCiAgZ2VvbV9wb2ludCgpICsgIyBBZGQgcG9pbnRzIHRvIHRoZSBwbG90CiAgbGFicyh0aXRsZSA9ICJXZWlnaHQgdnMuIE1pbGVzIFBlciBHYWxsb24iLCB4ID0gIldlaWdodCAoMTAwMCBsYnMpIiwgeSA9ICJNaWxlcyBQZXIgR2FsbG9uIikgIyBBZGQgcGxvdCBsYWJlbHMKYGBgCgoKYGBge3J9CgojQ3JlYXRlIGEgbGluZSBncmFwaCBvZiBvcmRlcmVkIG1wZyBieSB0aGUgcm93IG51bWJlci4KZGF0YV9tdGNhcnNfbGluZSA8LSBkYXRhX210Y2FycyAlPiUgbXV0YXRlKGluZGV4ID0gcm93X251bWJlcigpKSAjYWRkIGluZGV4IGNvbHVtbiBzbyB3ZSBjYW4gcGxvdCBpdAoKZ2dwbG90KGRhdGFfbXRjYXJzX2xpbmUsIGFlcyh4ID0gaW5kZXgsIHkgPSBtcGcpKSArCiAgZ2VvbV9saW5lKCkgKyAjIGFkZCBhIGxpbmUgdG8gdGhlIHBsb3QKICBsYWJzKHRpdGxlID0gIk1pbGVzIFBlciBHYWxsb24gYnkgSW5kZXgiLCB4ID0gIkluZGV4IiwgeSA9ICJNaWxlcyBQZXIgR2FsbG9uIikgIyBhZGQgcGxvdCBsYWJlbHMKCmBgYAoKYGBge3J9CiMgQ3JlYXRlIGEgaG9yaXpvbnRhbCBiYXIgY2hhcnQgb2YgdGhlIGF2ZXJhZ2UgaG9yc2Vwb3dlciBncm91cGVkIGJ5IGN5bGluZGVyIGNvdW50CmhwX2J5X2N5bCA8LSBkYXRhX210Y2FycyAlPiUgZ3JvdXBfYnkoY3lsKSAlPiUgc3VtbWFyaXplKGF2Z19ocCA9IG1lYW4oaHApKSAjIENhbGN1bGF0ZSBhdmVyYWdlIGhvcnNlcG93ZXIgZm9yIGVhY2ggY3lsaW5kZXIgZ3JvdXAKCmdncGxvdChocF9ieV9jeWwsIGFlcyh5ID0gY3lsLCB4ID0gYXZnX2hwKSkgKwogIGdlb21fYmFyKHN0YXQgPSAnaWRlbnRpdHknKSArICMgQ3JlYXRlIGJhcnMgYmFzZWQgb24gdGhlIGNhbGN1bGF0ZWQgYXZlcmFnZXMKICBsYWJzKHRpdGxlID0gIkF2ZXJhZ2UgSFAgYnkgQ3lsaW5kZXIgQ291bnQiLCB5ID0gIkN5bGluZGVyIENvdW50IiwgeCA9ICJBdmVyYWdlIEhvcnNlcG93ZXIiKSAKCiAgdGhlbWUoCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGNvbG9yID0gImJsdWUiKSwKICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJkYXJrcmVkIiksCiAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiZGFya2dyZWVuIikKICAgIAogICkKCiMgQWRkIHBsb3QgbGFiZWxzCgoKYGBgCgoKYGBge3J9CgojQ3JlYXRlIGEgc3RhY2tlZCBiYXIgY2hhcnQgb2YgYXZlcmFnZSBtcGcsIGRpc3AsIGhwLCBhbmQgd3QsIGdyb3VwZWQgYnkgY3lsLgpiYXJfZGF0YV9tdGNhcnMgPC0gZGF0YV9tdGNhcnMgJT4lIGdyb3VwX2J5KGN5bCkgJT4lIHN1bW1hcml6ZShtcGcgPSBtZWFuKG1wZyksIGRpc3AgPSBtZWFuKGRpc3ApLCBocCA9IG1lYW4oaHApLCB3dCA9IG1lYW4od3QpKSAlPiUgcGl2b3RfbG9uZ2VyKGNvbHMgPSBjKCJtcGciLCAiZGlzcCIsICJocCIsICJ3dCIpLCBuYW1lc190byA9ICJNZWFzdXJlbWVudCIsIHZhbHVlc190byA9ICJBdmVyYWdlIikgI0NhbGN1bGF0ZSBhdmVyYWdlIHZhbHVlcyBmb3IgZWFjaCBtZWFzdXJlbWVudCwgYW5kIHBpdm90IHRoZSBkYXRhIGludG8gYSBsb25nIGZvcm1hdC4KCmdncGxvdChiYXJfZGF0YV9tdGNhcnMsIGFlcyh4ID0gY3lsLCBmaWxsID0gTWVhc3VyZW1lbnQsIHkgPSBBdmVyYWdlKSkgKwogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArICNDcmVhdGUgYmFycyBiYXNlZCBvbiB0aGUgY2FsY3VsYXRlZCBhdmVyYWdlcwogIGxhYnModGl0bGUgPSAiQXZlcmFnZSBNZWFzdXJlbWVudHMgYnkgQ3lsaW5kZXIgQ291bnQiLCB4ID0gIkN5bGluZGVyIENvdW50IiwgeSA9ICJBdmVyYWdlIE1lYXN1cmVtZW50IikgI2FkZCBwbG90IGxhYmVscwpgYGAKCgpgYGB7cn0KCgoKYGBgCgo=