Setting x and y Scales
This lesson is called Setting x and y Scales, part of the R in 3 Months (Spring 2025) course. This lesson is called Setting x and y Scales, part of the R in 3 Months (Spring 2025) 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
127 Lessons
1
Welcome to Getting Started with R
00:57
2
Install R
02:05
3
Install RStudio
02:14
4
Files in R
04:33
5
Projects
07:54
6
Packages
02:38
7
Import Data
05:24
8
Objects and Functions
03:16
9
Examine our Data
12:50
10
Import Our Data Again
07:11
11
Getting Help
07:46
12
Week 1 Live Session (Spring 2025)
1:03:11
1
Welcome to Fundamentals of R
01:36
2
Update Everything
02:45
3
Start a New Project
02:16
4
The Tidyverse
03:34
5
Pipes
04:15
6
select()
07:25
7
mutate()
04:25
8
filter()
10:05
9
summarize()
05:59
10
group_by() and summarize()
05:54
11
arrange()
02:07
12
Create a New Data Frame
03:58
13
Bring it All Together (Data Wrangling)
07:29
14
Week 2 Project Assignment
09:39
15
Week 2 Coworking Session (Spring 2025)
16
Week 2 Live Session (Spring 2025)
1:03:24
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
14
Week 3 Project Assignment
03:30
15
Week 3 Coworking Session (Spring 2025)
16
Week 3 Live Session (Spring 2025)
1:02:31
1
Downloading and Importing Data
10:32
2
Overview of Tidy Data
05:50
3
Tidy Data Rule #1: Every Column is a Variable
07:43
4
Tidy Data Rule #3: Every Cell is a Single Value
10:04
5
Tidy Data Rule #2: Every Row is an Observation
04:42
6
Week 6 Coworking Session (Spring 2025)
7
Week 6 Live Session (Spring 2025)
1:02:38
1
Best Practices in Data Visualization
03:44
2
Tidy Data
02:25
3
Pipe Data into ggplot
09:54
4
Reorder Plots to Highlight Findings
03:37
5
Line Charts
04:17
6
Use Color to Highlight Findings
09:16
7
Declutter
08:29
8
Add Descriptive Labels to Your Plots
09:10
9
Use Titles to Highlight Findings
08:14
10
Use Annotations to Explain
07:09
11
Week 9 Coworking Session (Spring 2025)
12
Week 9 Live Session (Spring 2025)
59:09
1
Advanced Markdown
06:43
2
Tables
18:36
3
Advanced YAML and Code Chunk Options
05:53
4
Inline R Code
04:42
5
Making Your Reports Shine: Word Edition
04:30
6
Making Your Reports Shine: PDF Edition
06:11
7
Making Your Reports Shine: HTML Edition
06:06
8
Presentations
10:12
9
Dashboards
05:38
10
Websites
06:43
11
Publishing Your Work
04:38
12
Quarto Extensions
05:50
13
Parameterized Reporting, Part 1
10:57
14
Parameterized Reporting, Part 2
05:11
15
Parameterized Reporting, Part 3
07:47
16
Week 12 Coworking Session (Spring 2025)
17
Week 12 Live Session (Spring 2025)
57:01
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))