0
0
Matplotlibdata~20 mins

Major and minor ticks in Matplotlib - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Tick Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Identify the number of major ticks on the x-axis
Given the following matplotlib code, how many major ticks will appear on the x-axis?
Matplotlib
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([0, 1, 2, 3, 4], [10, 20, 25, 30, 40])
ax.xaxis.set_major_locator(plt.MultipleLocator(1))
plt.show()
A3
B5
C4
D6
Attempts:
2 left
💡 Hint
Count the ticks starting from 0 to 4 with step 1.
data_output
intermediate
2:00remaining
Output of minor tick positions on y-axis
What are the positions of the minor ticks on the y-axis after running this code?
Matplotlib
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([0, 1, 2], [10, 20, 30])
ax.yaxis.set_minor_locator(plt.MultipleLocator(5))
minor_ticks = ax.yaxis.get_minorticklocs()
print(minor_ticks)
A[5. 10. 15. 20. 25. 30.]
B[0. 5. 10. 15. 20. 25. 30.]
C[10. 15. 20. 25. 30.]
D[12.5 17.5 22.5 27.5]
Attempts:
2 left
💡 Hint
Minor ticks start at 10 and go up to 30 in steps of 5.
visualization
advanced
3:00remaining
Visualize major and minor ticks on both axes
Which option shows the correct plot with major ticks every 2 units and minor ticks every 0.5 units on both axes?
Matplotlib
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([0, 1, 2, 3, 4], [0, 1, 4, 9, 16])
ax.xaxis.set_major_locator(plt.MultipleLocator(2))
ax.xaxis.set_minor_locator(plt.MultipleLocator(0.5))
ax.yaxis.set_major_locator(plt.MultipleLocator(5))
ax.yaxis.set_minor_locator(plt.MultipleLocator(1))
plt.show()
APlot with x-axis major ticks at 0,2,4 and minor ticks every 0.5; y-axis major ticks at 0,5,10,15 and minor ticks every 1
BPlot with x-axis major ticks at 0,1,2,3,4 and minor ticks every 0.2; y-axis major ticks at 0,4,8,12 and minor ticks every 0.5
CPlot with x-axis major ticks at 1,3 and minor ticks every 1; y-axis major ticks at 0,10,20 and minor ticks every 2
DPlot with x-axis major ticks at 0,2,4 and no minor ticks; y-axis major ticks at 0,5,10,15 and minor ticks every 0.5
Attempts:
2 left
💡 Hint
Check the locator settings for both axes carefully.
🔧 Debug
advanced
2:00remaining
Identify the error in minor tick setting
What error will this code raise when setting minor ticks?
Matplotlib
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([0, 1, 2], [10, 20, 30])
ax.xaxis.set_minor_locator(plt.MultipleLocator(0))
plt.show()
AValueError: interval must be > 0
BTypeError: 'MultipleLocator' object is not callable
CNo error, plot shows with default minor ticks
DAttributeError: 'AxesSubplot' object has no attribute 'set_minor_locator'
Attempts:
2 left
💡 Hint
Check the argument passed to MultipleLocator.
🚀 Application
expert
3:00remaining
Customize ticks to highlight weekends on a time series plot
You have daily data for 14 days starting from Monday. You want to set major ticks on Mondays and minor ticks on other days. Which code snippet correctly sets this using matplotlib's FixedLocator?
Matplotlib
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd
import numpy as np

dates = pd.date_range('2023-01-02', periods=14)  # Monday start
values = np.random.rand(14)
fig, ax = plt.subplots()
ax.plot(dates, values)

# Your code here to set major ticks on Mondays and minor ticks on other days

plt.show()
A
mondays = mdates.date2num(dates[dates.weekday == 0])
ax.xaxis.set_major_locator(mdates.FixedLocator(mondays))
ax.xaxis.set_minor_locator(mdates.FixedLocator(mondays))
B
mondays = mdates.date2num(dates[dates.weekday == 1])
all_days = mdates.date2num(dates)
ax.xaxis.set_major_locator(mdates.FixedLocator(mondays))
ax.xaxis.set_minor_locator(mdates.FixedLocator(all_days))
C
mondays = mdates.date2num(dates[dates.weekday == 0])
ax.xaxis.set_major_locator(mdates.DayLocator(interval=7))
ax.xaxis.set_minor_locator(mdates.DayLocator(interval=1))
D
mondays = mdates.date2num(dates[dates.weekday == 0])
all_days = mdates.date2num(dates)
ax.xaxis.set_major_locator(mdates.FixedLocator(mondays))
ax.xaxis.set_minor_locator(mdates.FixedLocator(np.setdiff1d(all_days, mondays)))
Attempts:
2 left
💡 Hint
Use FixedLocator with dates converted to numbers and exclude Mondays from minor ticks.