plot(cars)

install.packages("tidyverse")
trying URL 'http://rspm/default/__linux__/noble/latest/src/contrib/tidyverse_2.0.0.tar.gz'
Content type 'application/x-gzip' length 425816 bytes (415 KB)
==================================================
downloaded 415 KB
The downloaded source packages are in
‘/tmp/RtmpaMFK3F/downloaded_packages’
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)
head(data_mtcars) #check to see if the data type change
# 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

#number of cylenders is the predictor variable
#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

#average hp per cyl show that 8 cyl have an higher hp by far compare to the others
#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

#the visual might be more visually pleasing but it has it own flwas
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCgpgYGB7cn0KcGxvdChjYXJzKQpgYGAKCgoKYGBge3J9Cmluc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIpCmBgYAoKCgpgYGB7cn0KbGlicmFyeSh0aWR5dmVyc2UpCmBgYAoKCgpgYGB7cn0KbGlicmFyeShnZ3Bsb3QyKQpgYGAKCgpgYGB7cn0KIyBMb2FkIHRoZSBtdGNhcnMgZGF0YXNldCAoYnVpbHQgaW50byBSKQpkYXRhX210Y2FycyA8LSBtdGNhcnMKCiMgVmlldyB0aGUgZmlyc3QgZmV3IHJvd3MgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YQpoZWFkKGRhdGFfbXRjYXJzKQpgYGAKCgoKYGBge3J9CiMgQ29udmVydCAnYW0nICh0cmFuc21pc3Npb24gdHlwZSkgYW5kICdjeWwnIChudW1iZXIgb2YgY3lsaW5kZXJzKSB0byBmYWN0b3JzIGZvciBjYXRlZ29yaWNhbCBwbG90dGluZwpkYXRhX210Y2FycyRhbSA8LSBhcy5mYWN0b3IoZGF0YV9tdGNhcnMkYW0pCmRhdGFfbXRjYXJzJGN5bCA8LSBhcy5mYWN0b3IoZGF0YV9tdGNhcnMkY3lsKQpgYGAKCgpgYGB7cn0KaGVhZChkYXRhX210Y2FycykgI2NoZWNrIHRvIHNlZSBpZiB0aGUgZGF0YSB0eXBlIGNoYW5nZQpgYGAKCgoKYGBge3J9CiMgQ3JlYXRlIGEgc2NhdHRlciBwbG90IG9mIGNhciB3ZWlnaHQgdnMuIG1pbGVzIHBlciBnYWxsb24sIGNvbG9yZWQgYnkgY3lsaW5kZXIgY291bnQKZ2dwbG90KGRhdGFfbXRjYXJzLCBhZXMoeCA9IHd0LCB5ID0gbXBnLCBjb2xvciA9IGN5bCkpICsKICBnZW9tX3BvaW50KCkgKyAjIEFkZCBwb2ludHMgdG8gdGhlIHBsb3QKICBsYWJzKHRpdGxlID0gIk1pbGVzIFBlciBHYWxsb24gdnMuIFdlaWdodCIsIHggPSAiV2VpZ2h0ICgxMDAwIGxicykiLCB5ID0gIk1pbGVzIFBlciBHYWxsb24iKSAjIEFkZCBwbG90IGxhYmVscyAKYGBgCmBgYHtyfQojbnVtYmVyIG9mIGN5bGVuZGVycyBpcyB0aGUgcHJlZGljdG9yIHZhcmlhYmxlIApgYGAKCgoKCmBgYHtyfQojQ3JlYXRlIGEgbGluZSBncmFwaCBvZiBvcmRlcmVkIG1wZyBieSB0aGUgcm93IG51bWJlci4KZGF0YV9tdGNhcnNfbGluZSA8LSBkYXRhX210Y2FycyAlPiUgbXV0YXRlKGluZGV4ID0gcm93X251bWJlcigpKSAjYWRkIGluZGV4IGNvbHVtbiBzbyB3ZSBjYW4gcGxvdCBpdAoKZ2dwbG90KGRhdGFfbXRjYXJzX2xpbmUsIGFlcyh4ID0gaW5kZXgsIHkgPSBtcGcpKSArCiAgZ2VvbV9saW5lKCkgKyAjIGFkZCBhIGxpbmUgdG8gdGhlIHBsb3QKICBsYWJzKHRpdGxlID0gIk1pbGVzIFBlciBHYWxsb24gYnkgSW5kZXgiLCB4ID0gIkluZGV4IiwgeSA9ICJNaWxlcyBQZXIgR2FsbG9uIikgIyBhZGQgcGxvdCBsYWJlbHMKYGBgCgoKCgoKYGBge3J9CiMgQ3JlYXRlIGEgaG9yaXpvbnRhbCBiYXIgY2hhcnQgb2YgdGhlIGF2ZXJhZ2UgaG9yc2Vwb3dlciBncm91cGVkIGJ5IGN5bGluZGVyIGNvdW50CmhwX2J5X2N5bCA8LSBkYXRhX210Y2FycyAlPiUgZ3JvdXBfYnkoY3lsKSAlPiUgc3VtbWFyaXplKGF2Z19ocCA9IG1lYW4oaHApKSAjIENhbGN1bGF0ZSBhdmVyYWdlIGhvcnNlcG93ZXIgZm9yIGVhY2ggY3lsaW5kZXIgZ3JvdXAKCmdncGxvdChocF9ieV9jeWwsIGFlcyh5ID0gY3lsLCB4ID0gYXZnX2hwKSkgKwogIGdlb21fYmFyKHN0YXQgPSAnaWRlbnRpdHknKSArICMgQ3JlYXRlIGJhcnMgYmFzZWQgb24gdGhlIGNhbGN1bGF0ZWQgYXZlcmFnZXMKICBsYWJzKHRpdGxlID0gIkF2ZXJhZ2UgSFAgYnkgQ3lsaW5kZXIgQ291bnQiLCB5ID0gIkN5bGluZGVyIENvdW50IiwgeCA9ICJBdmVyYWdlIEhvcnNlcG93ZXIiKSAjIEFkZCBwbG90IGxhYmVscwpgYGAKCmBgYHtyfQojYXZlcmFnZSBocCBwZXIgY3lsIHNob3cgdGhhdCA4IGN5bCBoYXZlIGFuIGhpZ2hlciBocCBieSBmYXIgY29tcGFyZSB0byB0aGUgb3RoZXJzIApgYGAKCgoKYGBge3J9CiNDcmVhdGUgYSBzdGFja2VkIGJhciBjaGFydCBvZiBhdmVyYWdlIG1wZywgZGlzcCwgaHAsIGFuZCB3dCwgZ3JvdXBlZCBieSBjeWwuCmJhcl9kYXRhX210Y2FycyA8LSBkYXRhX210Y2FycyAlPiUgZ3JvdXBfYnkoY3lsKSAlPiUgc3VtbWFyaXplKG1wZyA9IG1lYW4obXBnKSwgZGlzcCA9IG1lYW4oZGlzcCksIGhwID0gbWVhbihocCksIHd0ID0gbWVhbih3dCkpICU+JSBwaXZvdF9sb25nZXIoY29scyA9IGMoIm1wZyIsICJkaXNwIiwgImhwIiwgInd0IiksIG5hbWVzX3RvID0gIk1lYXN1cmVtZW50IiwgdmFsdWVzX3RvID0gIkF2ZXJhZ2UiKSAjQ2FsY3VsYXRlIGF2ZXJhZ2UgdmFsdWVzIGZvciBlYWNoIG1lYXN1cmVtZW50LCBhbmQgcGl2b3QgdGhlIGRhdGEgaW50byBhIGxvbmcgZm9ybWF0LgoKZ2dwbG90KGJhcl9kYXRhX210Y2FycywgYWVzKHggPSBjeWwsIGZpbGwgPSBNZWFzdXJlbWVudCwgeSA9IEF2ZXJhZ2UpKSArCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIpICsgI0NyZWF0ZSBiYXJzIGJhc2VkIG9uIHRoZSBjYWxjdWxhdGVkIGF2ZXJhZ2VzCiAgbGFicyh0aXRsZSA9ICJBdmVyYWdlIE1lYXN1cmVtZW50cyBieSBDeWxpbmRlciBDb3VudCIsIHggPSAiQ3lsaW5kZXIgQ291bnQiLCB5ID0gIkF2ZXJhZ2UgTWVhc3VyZW1lbnQiKSAjYWRkIHBsb3QgbGFiZWxzCmBgYAoKYGBge3J9CiN0aGUgdmlzdWFsIG1pZ2h0IGJlIG1vcmUgdmlzdWFsbHkgcGxlYXNpbmcgYnV0IGl0IGhhcyBpdCBvd24gZmx3YXMgCmBgYAoKCgoK