Bird
Raised Fist0
Matplotlibdata~20 mins

Why axis formatting matters in Matplotlib - Challenge Your Understanding

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Axis Formatting Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ visualization
intermediate
2:00remaining
Identify the effect of axis formatting on a plot

Look at the following code that plots a simple line chart. Which option shows the plot with the x-axis labels formatted as dates?

Matplotlib
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from datetime import datetime, timedelta

dates = [datetime(2024, 1, 1) + timedelta(days=i) for i in range(5)]
values = [10, 15, 7, 12, 9]

fig, ax = plt.subplots()
ax.plot(dates, values)

# Axis formatting missing here

plt.show()
Aax.yaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
Bax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
Cax.xaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: f'{x:.2f}'))
Dax.xaxis.set_major_locator(plt.MaxNLocator(integer=True))
Attempts:
2 left
💡 Hint

Think about which axis shows dates and how to format them properly.

❓ Predict Output
intermediate
1:30remaining
What is the output of this axis formatting code?

What will be the output of the following code snippet?

Matplotlib
import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
ax.plot(np.arange(5), np.arange(5)**2)
ax.set_xticks([0, 1, 2, 3, 4])
ax.set_xticklabels(['zero', 'one', 'two', 'three', 'four'])
labels = [label.get_text() for label in ax.get_xticklabels()]
print(labels)
A['zero', 'one', 'two', 'three', 'four']
B['0', '1', '2', '3', '4']
C['zero', 'one', 'two', 'three', 'four', '']
D['zero', 'one', 'two', 'three']
Attempts:
2 left
💡 Hint

Check how many labels are set and what get_xticklabels() returns.

❓ data_output
advanced
1:30remaining
How many ticks are shown after axis formatting?

Given this code, how many ticks will be visible on the y-axis?

Matplotlib
import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
ax.plot(np.arange(10), np.random.rand(10))
ax.yaxis.set_major_locator(plt.MaxNLocator(4))
ticks = ax.get_yticks()
print(len(ticks))
A5
B10
CCannot determine without plotting
D4
Attempts:
2 left
💡 Hint

Remember that MaxNLocator(4) tries to show up to 4 intervals, which means 5 ticks.

🔧 Debug
advanced
2:00remaining
Why does this axis formatting code raise an error?

Consider this code snippet:

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [4, 5, 6])
ax.xaxis.set_major_formatter('%Y-%m-%d')
plt.show()

Why does it raise an error?

ABecause plt.show() is missing parentheses
BBecause the plot data is not dates
CBecause set_major_formatter expects a Formatter object, not a string
DBecause the x-axis has no ticks
Attempts:
2 left
💡 Hint

Check the type of argument set_major_formatter requires.

🚀 Application
expert
2:30remaining
Choose the correct axis formatting to display large numbers in millions

You have a plot with y-axis values in the millions (e.g., 1,000,000). Which axis formatter will display the y-axis labels as '1M', '2M', etc.?

Matplotlib
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

fig, ax = plt.subplots()
ax.plot([1, 2, 3], [1000000, 2000000, 3000000])

# Apply correct formatter here

plt.show()
Aax.yaxis.set_major_formatter(ticker.FormatStrFormatter('%.2f'))
Bax.yaxis.set_major_formatter(ticker.PercentFormatter())
Cax.yaxis.set_major_formatter(ticker.ScalarFormatter())
Dax.yaxis.set_major_formatter(ticker.FuncFormatter(lambda x, _: f'{int(x/1e6)}M'))
Attempts:
2 left
💡 Hint

Think about how to convert large numbers to a shorter string with 'M' suffix.

Practice

(1/5)
1. Why is axis formatting important when creating charts with matplotlib?
easy
A. It adds animation effects to the chart.
B. It changes the color of the chart background.
C. It automatically saves the chart to a file.
D. It helps make the chart easier to understand by labeling and scaling axes properly.

Solution

  1. Step 1: Understand the role of axis formatting

    Axis formatting controls labels, ticks, and limits on the axes, which helps viewers read the chart easily.
  2. Step 2: Identify the effect on chart clarity

    Proper axis formatting makes the data story clear by showing correct scales and labels.
  3. Final Answer:

    It helps make the chart easier to understand by labeling and scaling axes properly. -> Option D
  4. Quick Check:

    Axis formatting = clarity [OK]
Hint: Axis formatting improves chart clarity and understanding [OK]
Common Mistakes:
  • Confusing axis formatting with chart colors
  • Thinking axis formatting adds animations
  • Assuming axis formatting saves files automatically
2. Which of the following matplotlib commands correctly sets the x-axis label to 'Time (s)'?
easy
A. plt.xaxis.label('Time (s)')
B. plt.set_xlabel('Time (s)')
C. plt.xlabel('Time (s)')
D. plt.label_x('Time (s)')

Solution

  1. Step 1: Recall the correct function for x-axis label

    The function to set the x-axis label in matplotlib is plt.xlabel().
  2. Step 2: Check the options for syntax correctness

    Only plt.xlabel('Time (s)') matches the correct syntax.
  3. Final Answer:

    plt.xlabel('Time (s)') -> Option C
  4. Quick Check:

    Use plt.xlabel() to label x-axis [OK]
Hint: Use plt.xlabel() to set x-axis label [OK]
Common Mistakes:
  • Using incorrect function names like plt.set_xlabel
  • Trying to access label as an attribute
  • Mixing up axis label functions
3. What will be the effect of this code on the x-axis ticks?
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [4, 5, 6])
plt.xticks([1, 2, 3], ['One', 'Two', 'Three'])
plt.show()
medium
A. The x-axis ticks will be replaced by labels 'One', 'Two', 'Three'.
B. The x-axis ticks will show numbers 1, 2, 3 as labels.
C. The x-axis ticks will be hidden.
D. The code will cause an error because of wrong syntax.

Solution

  1. Step 1: Understand plt.xticks() usage

    The function plt.xticks() sets the positions and labels of x-axis ticks.
  2. Step 2: Analyze the given arguments

    Positions are [1, 2, 3] and labels are ['One', 'Two', 'Three'], so ticks at 1, 2, 3 will show these labels.
  3. Final Answer:

    The x-axis ticks will be replaced by labels 'One', 'Two', 'Three'. -> Option A
  4. Quick Check:

    plt.xticks(pos, labels) changes tick labels [OK]
Hint: plt.xticks(pos, labels) sets custom tick labels [OK]
Common Mistakes:
  • Thinking ticks remain numeric after plt.xticks with labels
  • Assuming ticks get hidden without plt.xticks([])
  • Believing code causes syntax error
4. Identify the error in this code that tries to set y-axis limits:
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [4, 5, 6])
plt.ylim = (0, 10)
plt.show()
medium
A. The plot data is invalid and causes an error.
B. The code uses assignment instead of calling plt.ylim() function.
C. plt.show() is missing and causes no output.
D. There is no error; the code runs correctly.

Solution

  1. Step 1: Check how y-axis limits are set

    In matplotlib, plt.ylim() is a function to set y-axis limits, not an attribute to assign.
  2. Step 2: Identify the mistake in code

    The code uses plt.ylim = (0, 10) which assigns a tuple instead of calling the function plt.ylim(0, 10).
  3. Final Answer:

    The code uses assignment instead of calling plt.ylim() function. -> Option B
  4. Quick Check:

    Use plt.ylim() function, not assignment [OK]
Hint: Use plt.ylim() as a function, not assignment [OK]
Common Mistakes:
  • Assigning tuple to plt.ylim instead of calling it
  • Forgetting plt.show() to display plot
  • Confusing data errors with axis formatting errors
5. You want to create a plot where the x-axis shows dates but only every Monday is labeled to avoid clutter. Which approach best formats the axis in matplotlib?
hard
A. Use matplotlib.dates.WeekdayLocator to set ticks on Mondays and format labels with DateFormatter.
B. Rotate all date labels by 90 degrees without changing ticks.
C. Manually set x-axis limits to only show Mondays.
D. Use plt.xticks() with all dates as labels.

Solution

  1. Step 1: Understand the problem of cluttered date labels

    Showing all dates can clutter the axis; selecting specific days like Mondays reduces clutter.
  2. Step 2: Identify matplotlib tools for date axis formatting

    WeekdayLocator can set ticks on specific weekdays, and DateFormatter formats the tick labels nicely.
  3. Step 3: Evaluate options

    The approach using matplotlib.dates.WeekdayLocator to set ticks on Mondays and format labels with DateFormatter correctly reduces clutter; others either show all dates, only rotate labels without reducing ticks, or limit the axis range.
  4. Final Answer:

    Use matplotlib.dates.WeekdayLocator to set ticks on Mondays and format labels with DateFormatter. -> Option A
  5. Quick Check:

    Use WeekdayLocator + DateFormatter for clean date axes [OK]
Hint: Use WeekdayLocator and DateFormatter for selective date ticks [OK]
Common Mistakes:
  • Labeling all dates causing clutter
  • Only rotating labels without reducing ticks
  • Trying to limit axis range instead of ticks
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard