0
0
Matplotlibdata~20 mins

Secondary axes in Matplotlib - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Secondary Axes Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of plot with secondary y-axis
What will be the output of this code snippet that uses a secondary y-axis in matplotlib?
Matplotlib
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y1 = [10, 20, 25, 30]
y2 = [100, 200, 250, 300]
fig, ax1 = plt.subplots()
ax1.plot(x, y1, 'g-')
ax2 = ax1.twinx()
ax2.plot(x, y2, 'b--')
plt.show()
AA plot with one x-axis, left y-axis in green line for y1, and right y-axis in blue dashed line for y2
BA plot with two x-axes and one y-axis showing both y1 and y2 overlapped
CA plot with one x-axis and one y-axis showing only y1 in green line
DA plot with one x-axis and one y-axis showing only y2 in blue dashed line
Attempts:
2 left
💡 Hint
Remember that twinx() creates a second y-axis sharing the same x-axis.
data_output
intermediate
1:30remaining
Number of ticks on secondary y-axis
Given this code, how many major ticks will the secondary y-axis have by default?
Matplotlib
import matplotlib.pyplot as plt
x = [0, 1, 2, 3]
y1 = [1, 4, 9, 16]
y2 = [10, 40, 90, 160]
fig, ax1 = plt.subplots()
ax1.plot(x, y1)
ax2 = ax1.twinx()
ax2.plot(x, y2)
print(len(ax2.get_yticks()))
A5
B10
C7
D4
Attempts:
2 left
💡 Hint
Check the default number of yticks matplotlib creates for a linear scale.
visualization
advanced
2:30remaining
Identify the correct secondary x-axis transformation
Which option correctly creates a secondary x-axis that shows the square root of the primary x-axis values?
Matplotlib
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 16, 100)
y = np.sqrt(x)
fig, ax = plt.subplots()
ax.plot(x, y)
secax = ax.secondary_xaxis(1.0, functions=(np.sqrt, np.square))
secax.set_xlabel('Square root of x')
plt.show()
Asecax = ax.secondary_xaxis(1.0, functions=(np.sqrt, np.square))
Bsecax = ax.secondary_xaxis(1.0, functions=(np.square, np.sqrt))
Csecax = ax.secondary_xaxis(0.0, functions=(np.sqrt, np.square))
Dsecax = ax.secondary_xaxis(1.0, functions=(np.log, np.exp))
Attempts:
2 left
💡 Hint
The first function converts primary to secondary axis, the second converts back.
🔧 Debug
advanced
2:00remaining
Error when adding secondary y-axis with incompatible scales
What error will this code raise when trying to plot on a secondary y-axis with incompatible data types?
Matplotlib
import matplotlib.pyplot as plt
x = [1, 2, 3]
y1 = [10, 20, 30]
y2 = ['a', 'b', 'c']
fig, ax1 = plt.subplots()
ax1.plot(x, y1)
ax2 = ax1.twinx()
ax2.plot(x, y2)
plt.show()
AValueError: x and y must have same first dimension
BNo error, plot displays with categorical y2
CSyntaxError: invalid syntax
DTypeError: float() argument must be a string or a number, not 'str'
Attempts:
2 left
💡 Hint
Check if matplotlib can plot strings as y-values.
🚀 Application
expert
3:00remaining
Using secondary y-axis to compare different units
You have temperature data in Celsius and Fahrenheit for the same dates. Which code snippet correctly plots Celsius on the left y-axis and Fahrenheit on the right y-axis using secondary y-axis?
Matplotlib
import matplotlib.pyplot as plt
dates = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
celsius = [0, 10, 20, 15, 5]
fahrenheit = [32, 50, 68, 59, 41]
fig, ax1 = plt.subplots()
ax1.plot(dates, celsius, 'r-', label='Celsius')
ax2 = ax1.twinx()
ax2.plot(dates, fahrenheit, 'b--', label='Fahrenheit')
ax1.set_ylabel('Celsius')
ax2.set_ylabel('Fahrenheit')
plt.show()
AThe code runs but both lines overlap on the same y-axis scale
BThe code runs correctly and shows Celsius on left y-axis and Fahrenheit on right y-axis
CThe code raises TypeError because twinx() cannot be used with string x-axis
DThe code raises ValueError because dates are strings and cannot be plotted
Attempts:
2 left
💡 Hint
Matplotlib can plot categorical x-axis labels as strings.