Setting x and y Scales
This lesson is called Setting x and y Scales, part of the Fundamentals of R course. This lesson is called Setting x and y Scales, part of the Fundamentals of R course.
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 |>
drop_na(bill_length_mm) |>
group_by(island) |>
summarize(mean_bill_length = mean(bill_length_mm))
# 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!
Course Content
34 Lessons
1
The Grammar of Graphics
04:39
2
Scatterplots
03:46
3
Histograms
05:47
4
Bar Charts
06:37
5
Setting color and fill Aesthetic Properties
02:39
6
Setting color and fill Scales
05:40
7
Setting x and y Scales
03:09
8
Adding Text to Plots
07:32
9
Plot Labels
03:57
10
Themes
02:19
11
Facets
03:12
12
Save Plots
02:57
13
Bring it All Together (Data Visualization)
06:42
You need to be signed-in to comment on this post. Login.
Maria Montenegro • April 8, 2024
Hello! What does the c mean in the functions? example: limits= c(0,50). Wondering if it stands for something specific that can help me remember why it goes there, it doesn't seem intuitive to me.
I am also wondering if there is a way to edit breaks that is more efficient than entering the values one by one. Is there a way to specify what in excel is called the axis' units?
David Keyes Founder • April 8, 2024
The
c()
function combines multiple values. I think of it as "combine" in my head (though I'm not sure that's what its developers would actually call it). In this case, it means combine 0 and 50 so that 0 is the low value and 50 is the high value. Does that help?Acarilia Eduardo • October 1, 2024
Why does the exercise asks the y- axis to be set to go to 200, and the code in the solution sets it to go to 200? Am I reading it wrong? Thanks
Gracielle Higino Coach • October 1, 2024
Thanks for pointing that out, Acarilia! We fixed it and now the code shows the right value. 😉
Gaurab Pradhan • March 18, 2025
What if I want dont want to show scale in y-axis? insted display the data level for each bar?
Gaurab Pradhan • March 18, 2025
also how to update the x-axis and y axis title?
Gracielle Higino Coach • March 18, 2025
Hi Gaurab! I think what you're looking for is the
scale_x_discrete
layer. If your data is continuous and you want to display categories, you'll need to create these first (you can usemutate
combined withcase_when
, for example, to create these categories).To update the axis title, you can add a theme layer with
element_blank
for the x and/or y titles, like this:Mike LeVan • March 21, 2025
Hi,
I'm looking at the last two graphs and something odd is happening. I can see that the scales themselves are changing, but the heights of the bars are not. So when I run the first command the Adelie bar looks to be about height a little over 150 but when I run the second command the shape of the graph does not change but the scale does and that makes the bar look to be height a little over 120. It appears the numbers listed as the scale on the y-axis are changing, but the graph itself is not adjusting.
Gracielle Higino Coach • March 21, 2025
Hi Mike! That's correct: the thing is the point of reference. The bar ends exactly at the same point, but because the numbers in the axes are different, we get the impression that the bars end at different points.
Try adding a horizontal lines at 120 and 150 to visualize that:
Run the code with the different scales, one at a time, and use the left and right arrows on the plot panel to navigate the plots and see the difference. [= I suggest popping out the plots panel (you can do that by clicking on the "zoom" button there) to make it bigger and easier to see the scales.
Mike LeVan • March 22, 2025
Hi,
Is there a way to attach an image to a message? Here is a Google link to my image :
Original Image: https://drive.google.com/file/d/17wVn6fGb1VNiBmDQx3cUrwKc68WE_e9H/view?usp=sharing
Image with horizontal lines at 120 and 150 : https://drive.google.com/file/d/1VXLwvAfp_vFVXR6sVEPMIFXSmTGNdI8U/view?usp=sharing
I see what you are saying about the bars, but that doesn't get around the fact that the vertical axis is not correct. This can lead to wrong conclusions. I don't understand the point of a command that will change the scale of the vertical axis without changing the data as well.
Obviously I can take out the scale_y_continuous command and the visualization is fine. I am just trying to wrap my head around the command to make it make sense.
Thanks, Mike
Gracielle Higino Coach • March 22, 2025
Hey Mike! Thanks for expanding on this and sending your code! I've found a "bug" on your code and it completely makes sense now!
You're using a
labels
argument inside thescale_y_continuous
layer - this is a way for you to set whatever text you want on the breaks of the y axis. Instead, the original code uses thebreaks
arguments, which shows or hides specific breaks in the scale shown in the y axis. Try adding this layer to your plot to see the mess it can make, and then try commenting out the labels argument:Da'Shon Carr • March 26, 2025
I created a horizontal chart and noticed that you could add coord_flip, as David mentioned in his previous lessons.
ggplot(data = penguins_by_species, mapping = aes(x = species, y = n, fill = species)) + geom_col() + scale_fill_viridis_d(option = "F") + scale_y_continuous(limits = c(0, 200), breaks = c(0,40,80,120,160)) + coord_flip()
I played around with the scale_x_continous, too, and it seems to work:
ggplot(data = penguins_by_species, mapping = aes(x = n, y = species, fill = species)) + geom_col() + scale_fill_viridis_d(option = "F") + scale_x_continuous(limits = c(0, 200), breaks = c(0,20,40,60,100, 120, 140, 160))