Bird
Raised Fist0
Matplotlibdata~5 mins

Font properties customization in Matplotlib

Choose your learning style10 modes available
Introduction

Changing font properties helps make your charts easier to read and look nicer.

You want to make the title of a chart bigger and bold.
You need to change the font style of axis labels to italic.
You want to use a specific font family like 'Comic Sans' for fun charts.
You want to adjust the font size of legend text to fit better.
You want to highlight some text by changing its color and weight.
Syntax
Matplotlib
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

font = FontProperties(family='serif', style='italic', weight='bold', size=14, color='blue')
plt.title('My Title', fontproperties=font)
plt.xlabel('X axis', fontproperties=font)
plt.ylabel('Y axis', fontproperties=font)
plt.show()

You create a FontProperties object to set font details.

Pass this object to text elements like title, xlabel, ylabel using fontproperties.

Examples
Title with serif font, size 16, and bold weight.
Matplotlib
font = FontProperties(family='serif', size=16, weight='bold')
plt.title('Bold Serif Title', fontproperties=font)
X axis label with italic sans-serif font.
Matplotlib
font = FontProperties(family='sans-serif', style='italic', size=12)
plt.xlabel('Italic X Label', fontproperties=font)
Y axis label with light weight monospace font.
Matplotlib
font = FontProperties(family='monospace', size=10, weight='light')
plt.ylabel('Light Monospace Y Label', fontproperties=font)
Sample Program

This program plots a simple line chart. The title uses a serif italic bold font in dark red color. The axis labels use a green sans-serif font with normal weight.

Matplotlib
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

# Create font properties for title
title_font = FontProperties(family='serif', style='italic', weight='bold', size=18, color='darkred')

# Create font properties for axis labels
label_font = FontProperties(family='sans-serif', size=14, weight='normal', color='green')

# Sample data
x = [1, 2, 3, 4]
y = [10, 20, 25, 30]

plt.plot(x, y)
plt.title('Sales Over Time', fontproperties=title_font)
plt.xlabel('Month', fontproperties=label_font)
plt.ylabel('Sales', fontproperties=label_font)
plt.show()
OutputSuccess
Important Notes

Not all fonts are available on every computer; if a font family is missing, matplotlib uses a default font.

You can also set font properties directly using keyword arguments like fontsize, fontweight, and color without FontProperties.

Use plt.rcParams to set default font styles for all plots.

Summary

Font properties control how text looks in your plots.

Use FontProperties to customize font family, style, weight, size, and color.

Apply font properties to titles, labels, and other text elements for better visuals.

Practice

(1/5)
1. Which font property controls the thickness of the text in a matplotlib plot?
easy
A. family
B. size
C. weight
D. color

Solution

  1. Step 1: Understand font properties

    Font properties include size, weight, family, style, and color.
  2. Step 2: Identify the property for thickness

    The thickness or boldness of text is controlled by the 'weight' property.
  3. Final Answer:

    weight -> Option C
  4. Quick Check:

    Font thickness = weight [OK]
Hint: Thickness means weight in font properties [OK]
Common Mistakes:
  • Confusing size with weight
  • Thinking color controls thickness
  • Mixing family with weight
2. Which of the following is the correct way to set the font size of a plot title to 16 using fontdict in matplotlib?
easy
A. plt.title('My Title', font={'fontsize':16})
B. plt.title('My Title', fontdict={'size':16})
C. plt.title('My Title', font={'size':16})
D. plt.title('My Title', fontdict={'fontsize':16})

Solution

  1. Step 1: Recall fontdict usage

    In matplotlib, fontdict keys include 'size' for font size, not 'fontsize'.
  2. Step 2: Check correct syntax

    Using fontdict={'size':16} correctly sets font size to 16.
  3. Final Answer:

    plt.title('My Title', fontdict={'size':16}) -> Option B
  4. Quick Check:

    fontdict uses 'size' key [OK]
Hint: Use 'size' key inside fontdict for font size [OK]
Common Mistakes:
  • Using 'fontsize' instead of 'size'
  • Using 'font' instead of 'fontdict'
  • Wrong dictionary key names
3. What will be the font size of the x-axis label in the following code?
import matplotlib.pyplot as plt
plt.xlabel('X Axis', fontdict={'size':20, 'weight':'bold'})
plt.show()
medium
A. 20
B. Bold but default size
C. Default size (usually 10)
D. Error due to wrong fontdict

Solution

  1. Step 1: Analyze fontdict in xlabel

    The fontdict sets 'size' to 20 and 'weight' to 'bold'.
  2. Step 2: Understand effect on label

    The label will use size 20 and bold weight as specified.
  3. Final Answer:

    20 -> Option A
  4. Quick Check:

    fontdict size = 20 [OK]
Hint: fontdict size sets label font size directly [OK]
Common Mistakes:
  • Assuming default size
  • Ignoring weight property
  • Thinking code causes error
4. Identify the error in this code snippet that tries to set the legend font to italic:
import matplotlib.pyplot as plt
plt.plot([1,2,3], label='Line')
plt.legend(prop={'style':'italic'})
plt.show()
medium
A. Missing plt.legend() call
B. No error, code runs fine
C. Incorrect label argument in plot
D. 'style' is not a valid font property key for legend prop

Solution

  1. Step 1: Check font property keys for legend

    Valid keys include 'size', 'weight', 'family', 'style', and 'color'. 'style' is valid but must be a recognized value.
  2. Step 2: Verify 'italic' usage

    'italic' is a valid style, so the key is correct. However, in matplotlib, 'style' should be set inside a FontProperties object or as a string, not directly in prop dict.
  3. Step 3: Identify actual error

    The error is that 'prop' expects a FontProperties object or a dictionary with correct keys, but 'style' key is not always recognized directly in prop dict in some matplotlib versions.
  4. Final Answer:

    'style' is not a valid font property key for legend prop -> Option D
  5. Quick Check:

    Legend prop keys must be valid font properties [OK]
Hint: Use FontProperties for complex font styles in legend [OK]
Common Mistakes:
  • Using wrong keys in prop dict
  • Forgetting to import FontProperties
  • Assuming all keys work directly
5. You want to create a plot with a title that uses a custom font family 'Comic Sans MS', size 18, bold weight, and blue color. Which code snippet correctly applies all these font properties?
hard
A. plt.title('My Plot', fontdict={'family':'Comic Sans MS', 'size':18, 'weight':'bold', 'color':'blue'})
B. plt.title('My Plot', fontdict={'fontfamily':'Comic Sans MS', 'fontsize':18, 'fontweight':'bold', 'fontcolor':'blue'})
C. plt.title('My Plot', font={'family':'Comic Sans MS', 'size':18, 'weight':'bold', 'color':'blue'})
D. plt.title('My Plot', fontdict={'family':'Comic Sans MS', 'fontsize':18, 'weight':'bold', 'color':'blue'})

Solution

  1. Step 1: Check correct fontdict keys

    Valid keys are 'family', 'size', 'weight', and 'color'. 'fontsize' and 'fontweight' are incorrect keys here.
  2. Step 2: Verify values and syntax

    plt.title('My Plot', fontdict={'family':'Comic Sans MS', 'size':18, 'weight':'bold', 'color':'blue'}) uses correct keys and values for family, size, weight, and color.
  3. Final Answer:

    plt.title('My Plot', fontdict={'family':'Comic Sans MS', 'size':18, 'weight':'bold', 'color':'blue'}) -> Option A
  4. Quick Check:

    Use 'family', 'size', 'weight', 'color' keys in fontdict [OK]
Hint: Use standard keys: family, size, weight, color in fontdict [OK]
Common Mistakes:
  • Using 'fontsize' instead of 'size'
  • Using 'fontcolor' instead of 'color'
  • Passing fontdict as 'font'
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