library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.2.1     ✔ readr     2.2.0
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ ggplot2   4.0.3     ✔ tibble    3.3.1
## ✔ lubridate 1.9.5     ✔ tidyr     1.3.2
## ✔ purrr     1.2.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# Create data
data <- data.frame(
  x=LETTERS[1:5],
  y=abs(rnorm(5))
)
 
# plot
ggplot(data, aes(x=x, y=y)) +
  geom_segment( aes(x=x, xend=x, y=0, yend=y)) +
  geom_point( size=5, color="red", fill=alpha("yellow", 0.3), alpha=0.7, shape=21, stroke=2) 

# Load ggplot2
library(ggplot2)

# Create data
data <- data.frame(
  Students=c("A","B","C","D","E") ,  
  Grades=c(3,12,5,18,45)
  )

# Barplot
ggplot(data, aes(x=Students, y=Grades)) + 
  geom_bar(stat = "identity")