Skip to content
Ally is live! Learn to use AI with R today.
R for the Rest of Us Logo

Fundamentals of R

Setting x and y Scales

Transcript

Click on the transcript to go to that point in the video. Please note that transcripts are auto generated and may contain minor inaccuracies.

View code shown in video
# Load Packages -----------------------------------------------------------

library(tidyverse)

# Import Data -------------------------------------------------------------

penguins <- read_csv("penguins.csv")

penguin_bill_length_by_island <-
  penguins |>
  group_by(island) |>
  summarize(mean_bill_length = mean(bill_length_mm, na.rm = TRUE)) |>
  arrange(mean_bill_length)

# Setting x and y Scales --------------------------------------------------

# Adjusting our x and y axes is similar.
# Remember that the x and y axes are considered an aesthetic properties
# in the same way color and fill are.

# We adjust our x and y axes using the scale_ set of functions.
# The exact function you use depends on your data.
# For example, you would use scale_y_continuous()
# if you have continuous data on the y axis.

# The limits argument sets the minimum and maximum values that display.

ggplot(
  data = penguin_bill_length_by_island,
  mapping = aes(
    x = island,
    y = mean_bill_length,
    fill = island
  )
) +
  geom_col() +
  scale_y_continuous(limits = c(0, 50))

# The breaks argument determines which axis labels show up.

ggplot(
  data = penguin_bill_length_by_island,
  mapping = aes(
    x = island,
    y = mean_bill_length,
    fill = island
  )
) +
  geom_col() +
  scale_y_continuous(
    limits = c(0, 50),
    breaks = c(0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50)
  )

# If we want to change the x axis labels, we'd need to use
# the labels argument in scale_x_discrete() because that data is categorical.

ggplot(
  data = penguin_bill_length_by_island,
  mapping = aes(
    x = island,
    y = mean_bill_length,
    fill = island
  )
) +
  geom_col() +
  scale_y_continuous(
    limits = c(0, 50),
    breaks = c(0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50)
  ) +
  scale_x_discrete(
    labels = c("Biscoe Island", "Dream Island", "Torgersen Island")
  )

Your Turn

# Load Packages -----------------------------------------------------------

library(tidyverse)

# Import Data -------------------------------------------------------------

penguins <- read_csv("penguins.csv")

# Setting x and y Scales --------------------------------------------------

# Copy the code for the last bar chart you made
# Update it so that the y axis goes from 0 to 200

# YOUR CODE HERE

# Copy the code you just wrote
# Update it so that it has breaks on the y axis at 0, 40, 80, 120, and 160

# YOUR CODE HERE

Have any questions? Put them below and we will help you out!

You need to be signed-in to comment on this post. Login.

Maia Werner-Avidon

Maia Werner-Avidon • October 5, 2026

What is the "c" referring to in the following example: limits = c(0, 50), breaks = c(0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50)

Gracielle Higino

Gracielle Higino Coach • October 5, 2026

Great question! c() is a concatenating function that combines elements into a vector (a uni-dimensional set of elements). It's probably the most frequently used function in R! 😄 In this particular case, it's telling R that you want the limits and the breaks of your plot to be composed of all the elements in each set.

Lilly Yu

Lilly Yu • October 8, 2026

When we run the last bit of code in the your-turn exercise, we lose the 200 label on the y axis. Is there a reason why this no longer exists once we've defined the line breaks as 0, 40, 80, 120, and 160, yet still defined the limits as 0 and 200?

Gracielle Higino

Gracielle Higino Coach • October 8, 2026

Hi Lilly! The limits only define the range of the y-axis, not the labels that we see on the breaks. To add a break at 200, you need to include it in the breaks argument. Check what happens when you keep the breaks and change the limits to c(0, 500), for example. You end up with a good portion of the y-axis with no breaks at all. Also test what happens when you remove any number in your breaks sequence (e.g., set breaks = c(0, 40, 80, 160)).

Lilly Yu

Lilly Yu • October 8, 2026

Thank you! I added 200 to my breaks and now see it on my Y axis.

New from Ally Chat, extension, or terminal: where to work with AI