📖 Scenario: You are working on a simple data visualization project in R. You want to use colors to represent different values in your data clearly and nicely.
🎯 Goal: You will create a vector of values, set up a color palette, apply a color scale to your values, and then display the colors to see how the palette works.
📋 What You'll Learn
Create a numeric vector with specific values
Create a color palette using R's built-in color functions
Map the numeric values to colors using the palette
Print the resulting colors to the console
💡 Why This Matters
🌍 Real World
Color scales help show data differences clearly in charts and maps, making information easier to understand.
💼 Career
Data analysts and scientists use color palettes to make visualizations that communicate insights effectively.
Progress0 / 4 steps
1
Create a numeric vector
Create a numeric vector called values with these exact numbers: 10, 20, 30, 40, 50
R Programming
Hint
Use the c() function to combine numbers into a vector.
2
Create a color palette
Create a color palette called palette using the colorRampPalette function with these two colors: "blue" and "red". Generate exactly 5 colors.
R Programming
Hint
Use colorRampPalette(c("blue", "red")) and then call it with (5) to get 5 colors.
3
Map values to colors
Create a vector called value_colors that assigns each number in values a color from palette. Use the cut function to divide values into 5 intervals and map them to the palette colors.
R Programming
Hint
Use cut(values, breaks=5, labels=FALSE) to get indices, then use them to index palette.
4
Print the colors
Print the value_colors vector to the console to see the colors assigned to each value.
R Programming
Hint
Use print(value_colors) to display the colors.
Practice
(1/5)
1. What is the main difference between a color scale and a color palette in R visualization?
easy
A. Color scales and palettes are exactly the same in R.
B. Color scales assign fixed colors to categories, palettes show smooth color changes for continuous data.
C. Color scales are used only for bar charts, palettes only for scatter plots.
D. Color scales show smooth color changes for continuous data, palettes assign fixed colors to categories.
Solution
Step 1: Understand color scales
Color scales map continuous data values to a gradient of colors smoothly changing from one to another.
Step 2: Understand color palettes
Color palettes assign specific, fixed colors to discrete categories or groups.
Final Answer:
Color scales show smooth color changes for continuous data, palettes assign fixed colors to categories. -> Option D
2. Which of the following is the correct syntax to apply a continuous color scale using the viridis palette in ggplot2?
easy
A. + scale_color_viridis_c()
B. + scale_color_manual(values = viridis)
C. + scale_fill_viridis_d()
D. + scale_color_gradient(low = 'blue', high = 'red')"
Solution
Step 1: Identify continuous color scale function
In ggplot2, scale_color_viridis_c() applies a continuous viridis color scale.
Step 2: Check other options
scale_color_manual() is for manual discrete colors, scale_fill_viridis_d() is for discrete fill colors, and scale_color_gradient() is a generic gradient, not viridis.
Hint: Use _c suffix for continuous scales in ggplot2 [OK]
Common Mistakes:
Using _d suffix for continuous data
Confusing fill and color scales
Passing palette name to scale_color_manual incorrectly
3. What will be the output of this R code snippet?
library(ggplot2)
data <- data.frame(x = 1:5, y = 1:5, z = c(10, 20, 30, 40, 50))
ggplot(data, aes(x, y, color = z)) +
geom_point(size = 5) +
scale_color_gradient(low = 'yellow', high = 'red')
medium
A. Points colored with default ggplot2 palette ignoring scale
B. Points colored from yellow (low z) to red (high z) smoothly
C. Error because scale_color_gradient requires fill aesthetic
D. Points colored only yellow regardless of z values
Solution
Step 1: Understand the mapping
The color aesthetic is mapped to numeric variable z, so a continuous color scale applies.
Step 2: Analyze scale_color_gradient
This function creates a smooth gradient from low color (yellow) to high color (red) for the points.
Final Answer:
Points colored from yellow (low z) to red (high z) smoothly -> Option B
Quick Check:
scale_color_gradient maps numeric to gradient colors [OK]
Hint: Continuous color mapped with scale_color_gradient(low, high) [OK]
Common Mistakes:
Thinking scale_color_gradient only works with fill
Expecting discrete colors instead of gradient
Ignoring the color aesthetic mapping
4. Identify the error in this R code that tries to use a palette for discrete colors:
library(ggplot2)
data <- data.frame(x = factor(c('A','B','C')), y = c(3,5,2))
ggplot(data, aes(x, y, fill = x)) +
geom_bar(stat = 'identity') +
scale_fill_gradientn(colors = c('red', 'green', 'blue'))
medium
A. geom_bar requires color aesthetic, not fill
B. Missing + sign before scale_fill_gradientn
C. Using scale_fill_gradientn for discrete fill instead of scale_fill_manual or scale_fill_brewer
D. Data x variable should be numeric, not factor
Solution
Step 1: Check data and aesthetics
The fill aesthetic is mapped to a factor variable x, which is discrete.
Step 2: Analyze scale function
scale_fill_gradientn() is for continuous gradients, not discrete palettes. For discrete fill, use scale_fill_manual() or scale_fill_brewer().
Final Answer:
Using scale_fill_gradientn for discrete fill instead of scale_fill_manual or scale_fill_brewer -> Option C
Quick Check:
Discrete fill needs manual or brewer palettes, not gradientn [OK]
Hint: Use manual or brewer scales for discrete colors, not gradientn [OK]
Common Mistakes:
Using gradient scales for discrete variables
Forgetting + sign before scale function
Confusing fill and color aesthetics
5. You want to create a ggplot scatter plot with points colored by a numeric variable but want to highlight values above 50 in red and others in a blue-to-green gradient. Which approach correctly applies this custom color scale?
hard
A. Use scale_color_gradient with low='blue', high='green' and add geom_point with color='red' for points > 50 separately
B. Use a custom color scale with a conditional color vector inside scale_color_manual
C. Use scale_color_gradientn with colors = c('blue', 'green', 'red') and breaks at 50
D. Create a new factor variable for >50 and <=50, then use scale_color_manual with c('bluegreen', 'red')"
Solution
Step 1: Understand the requirement
We want a gradient color for values <= 50 and red color for values > 50.
Step 2: Analyze options
Use scale_color_gradient with low='blue', high='green' and add geom_point with color='red' for points > 50 separately suggests using a gradient scale for all points and layering a separate geom_point with red color for points > 50, which correctly highlights those points.
Step 3: Why others fail
Use a custom color scale with a conditional color vector inside scale_color_manual tries conditional colors inside scale_color_manual which expects discrete values, not numeric. Use scale_color_gradientn with colors = c('blue', 'green', 'red') and breaks at 50 mixes gradient colors but cannot isolate >50 in red. Create a new factor variable for >50 and <=50, then use scale_color_manual with c('bluegreen', 'red')" changes variable to factor but loses gradient effect.
Final Answer:
Use scale_color_gradient with low='blue', high='green' and add geom_point with color='red' for points > 50 separately -> Option A
Quick Check:
Separate layers for highlight + gradient for others [OK]
Hint: Layer points with red color separately to highlight above threshold [OK]
Common Mistakes:
Trying to mix discrete and continuous scales in one scale
Using scale_color_manual for numeric gradient
Not layering points for highlight
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.