How do you caption a graph in python?

First, I feel weird posting an answer against the co-lead developer of matplotlib. Obviously, @tacaswell knows matplotlib far better than I ever will. But at the same time, his answer wasn't dynamic enough for me. I needed a caption that would always be based on the position of the xlabel, and couldn't just use text annotations.

I considered simply changing the xlabel to add a newline and the caption text, but that wouldn't clearly differentiate the caption, and you can't do things like change the text size or make it italic in the middle of a text string.

I solved this by using matplotlib's TeX capabilities. Here's my solution:

from matplotlib import pyplot as plt
from matplotlib import rc
import numpy as np
from pylab import *

rc('text', usetex=True)

file = open('distribution.txt', 'r')

txt="I need the caption to be present a little below X-axis"

x=[]
y=[]
for line in file:
    new=line.rstrip()
    mystring=new.split("\t")
    x.append(mystring[0])
    y.append(mystring[1])


fig = plt.figure()
ax1 = fig.add_axes((0.1,0.4,0.8,0.5))
ax1.set_title("This is my title")
ax1.set_xlabel(r'\begin{center}X-axis\\*\textit{\small{' + txt + r'}}\end{center}')
ax1.set_ylabel('Y-axis')
ax1.scatter(x,y, c='r')
plt.xlim(0, 1.05)
plt.ylim(0, 2.5)
plt.show()

I did the same thing with the random scatter plot from tacaswell's answer, and here's my result:

How do you caption a graph in python?

One warning: if you tweak this to take input string variables, the strings may not be properly escaped for use with TeX. Escaping LaTeX code is already covered on Stack Overflow, at https://stackoverflow.com/a/25875504/1404311 . I used that directly, and then could take arbitrary xlabels and captions.


To add caption below X-axis for a scatter plot, we can use text() method for the current figure.

Steps

  • Create x and y data points using numpy.

  • Create a new figure or activate an existing figure using figure() method.

  • Plot the scatter points with x and y data points.

  • To add caption to the figure, use text() method.

  • Adjust the padding between and around the subplots.

  • To display the figure, use show() method.

Example

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
x = np.random.rand(10)
y = np.random.rand(10)
fig = plt.figure()
plt.scatter(x, y, c=y)
fig.text(.5, .0001, "Scatter Plot", ha='center')
plt.tight_layout()
plt.show()

Output

How do you caption a graph in python?

How do you caption a graph in python?

Updated on 06-May-2021 13:00:19

  • Related Questions & Answers
  • Adding a line to a scatter plot using Python's Matplotlib
  • Plot scatter points on polar axis in Matplotlib
  • Plot scatter points using plot method in Matplotlib
  • Adding a scatter of points to a boxplot using Matplotlib
  • Adding extra axis ticks using Matplotlib
  • Show the origin axis (x,y) in Matplotlib plot
  • Moving X-axis in Matplotlib during real-time plot
  • Plot a 3D surface from {x,y,z}-scatter data in Python Matplotlib
  • Python Scatter Plot with Multiple Y values for each X
  • How to make a discrete colorbar for a scatter plot in matplotlib?
  • How to animate a scatter plot in Matplotlib?
  • How to plot data against specific dates on the X-axis using Matplotlib?
  • How to draw an average line for a scatter plot in MatPlotLib?
  • Updating the X-axis values using Matplotlib animation
  • Aligning table to X-axis using matplotlib Python

Matplotlib is an amazing visualization library in Python for 2D plots of arrays. Matplotlib is a multi-platform data visualization library built on NumPy arrays and designed to work with the broader SciPy stack.

Matplotlib.pyplot.title()

The title() method in matplotlib module is used to specify title of the visualization depicted and displays the title using various attributes.

Syntax: matplotlib.pyplot.title(label, fontdict=None, loc=’center’, pad=None, **kwargs)

Parameters:

  • label(str): This argument refers to the actual title text string of the visualization depicted.
  • fontdict(dict) : This argument controls the appearance of the text such as text size, text alignment etc. using a dictionary. Below is the default fontdict:

    fontdict = {‘fontsize’: rcParams[‘axes.titlesize’],
    ‘fontweight’ : rcParams[‘axes.titleweight’],
    ‘verticalalignment’: ‘baseline’,
    ‘horizontalalignment’: loc}

  • loc(str): This argument refers to the location of the title, takes string values like 'center', 'left' and 'right'.
  • pad(float): This argument refers to the offset of the title from the top of the axes, in points. Its default values in None.
  • **kwargs: This argument refers to the use of other keyword arguments as text properties such as color, fonstyle, linespacing, backgroundcolor, rotation etc.

Return Type: The title() method returns a string that represents the title text itself.

Below are some examples to illustrate the use of title() method:

Example 1: Using matplotlib.pyplot to depict a linear graph and display its title using matplotlib.pyplot.title().

Python3

import matplotlib.pyplot as plt 

y = [0,1,2,3,4,5]

x= [0,5,10,15,20,25]

plt.plot(x, y, color='green'

plt.xlabel('x'

plt.ylabel('y'

plt.title("Linear graph")

plt.show() 

Output:

How do you caption a graph in python?

In the above example, only the label argument is assigned as “Linear graph” in the title() method and the other parameters are assigned to their default values. Assignment of the label argument is the minimum requirement to display the title of a visualization.

Example 2: Using matplotlib.pyplot to depict a ReLU function graph and display its title using matplotlib.pyplot.title().

Python3

import matplotlib.pyplot as plt 

x = [-5,-4,-3,-2,-1,0,1,2, 3, 4, 5]

y = []

for i in range(len(x)):

    y.append(max(0,x[i]))

plt.plot(x, y, color='green'

plt.xlabel('x'

plt.ylabel('y'

plt.title(label="ReLU function graph",

          fontsize=40,

          color="green")

Output:

How do you caption a graph in python?

The above program illustrates the use of label argument, fontsize key of the fontdict argument and color argument which is an extra parameter(due to **kwargs) which changes the color of the text.

Example 3: Using matplotlib.pyplot to depict a bar graph and display its title using matplotlib.pyplot.title().

Python3

import matplotlib.pyplot as plt

import numpy as np

language = ['C','C++','Java','Python']

users = [80,60,130,150]

index = np.arange(len(language))

plt.bar(index, users, color='green')

plt.xlabel('Users')

plt.ylabel('Language')

plt.xticks(index, language)

plt.title(label='Number of Users of a particular Language'

          fontweight=10

          pad='2.0')

Output:

How do you caption a graph in python?

Here, the fontweight key of the fontdict argument and pad argument is used in the title() method along with the label parameter.

Example 4: Using matplotlib.pyplot to depict a pie chart and display its title using matplotlib.pyplot.title().

Python3

from matplotlib import pyplot as plt

foodPreference = ['Vegetarian', 'Non Vegetarian'

                  'Vegan', 'Eggitarian']

consumers = [30,100,10,60]

fig = plt.figure()

ax = fig.add_axes([0,0,1,1])

ax.axis('equal')

ax.pie(consumers, labels = foodPreference, 

       autopct='%1.2f%%')

plt.title(label="Society Food Preference",

          loc="left",

          fontstyle='italic')

Output:

How do you caption a graph in python?

In the above data visualization of the pie chart, label, fontweight
keyword from fontdict and fontstyle(**kwargs) argument(takes string values such as 'italic', 'bold' and 'oblique') is used in the title() method to display the title of the pie chart.

Example 5: Using matplotlib.pyplot to visualize a signal in a graph and display its title using matplotlib.pyplot.title().

Python3

from matplotlib import pyplot  

import numpy 

signalTime = numpy.arange(0, 100, 0.5); 

signalAmplitude = numpy.sin(signalTime) 

pyplot.plot(signalTime, signalAmplitude, color ='green'

pyplot.xlabel('Time'

pyplot.ylabel('Amplitude'

pyplot.title("Signal",

             loc='right',

             rotation=45)

Output:

How do you caption a graph in python?

Here, the label argument is assigned to 'signal' , loc argument is assigned to 'right' and the rotation argument (**kwargs) which takes angle value in degree is assigned to 45 degrees.

Example 6: Using matplotlib.pyplot to show an image and display its title using matplotlib.pyplot.title().

Python3

from PIL import ImageTk, Image  

from matplotlib import pyplot as plt

testImage = Image.open('g4g.png')

plt.title("Geeks 4 Geeks",

          fontsize='20',

          backgroundcolor='green',

          color='white')

plt.imshow(testImage)

Output:

How do you caption a graph in python?

In the above example, the title of an image is displayed using the title() method having arguments label as "Geeks 4 Geeks", fontsize key from fontdict as '20', backgroundcolor and color are extra parameters having string values 'green' and 'white' respectively.


How do you add a caption to a graph in Python?

To add caption to the figure, use text() method. Adjust the padding between and around the subplots. To display the figure, use show() method.

How do you label a graph in Python?

With Pyplot, you can use the xlabel() and ylabel() functions to set a label for the x- and y-axis..
Add labels to the x- and y-axis: import numpy as np. ... .
Add a plot title and labels for the x- and y-axis: import numpy as np. ... .
Set font properties for the title and labels: import numpy as np. ... .
Position the title to the left:.

How do you annotate a line graph in Python?

Plotting.
Create a figure and subplots. fig, ax = plt. ... .
Format dates. ax. ... .
Set a title. ttl = ax. ... .
Create annotations. Next, we'll create three annotations for date values placed in rows #66, 78, and 150 in our dataframe ( df ). ... .
Create labels and ticks, set their color and font. ax. ... .
Save the file. filename = 'mpl-line-chart' plt..

How do I write text in Matplotlib?

Basic text commands.
text() - add text at an arbitrary location to the Axes; matplotlib. ... .
xlabel() - add an axis label to the x-axis; matplotlib. ... .
ylabel() - add an axis label to the y-axis; matplotlib. ... .
title() - add a title to the Axes; matplotlib. ... .
figtext() - add text at an arbitrary location to the Figure; matplotlib..