In matplotlib, how do you display an axis on both sides of the figure?


Question

I want to draw a plot with matplotlib with axis on both sides of the plot, similar to this plot (the color is irrelevant to this question):

plot

How can I do this with matplotlib?

Note: contrary to what is shown in the example graph, I want the two axis to be exactly the same, and want to show only one graph. Adding the two axis is only to make reading the graph easier.

1
14
9/10/2013 3:19:08 PM

Accepted Answer

There are a couple of relevant examples in the online documentation:

13
1/30/2018 9:16:46 AM

You can use tick_params() (this I did in Jupyter notebook):

import matplotlib.pyplot as plt

bar(range(10), range(10))
tick_params(labeltop=True, labelright=True)

Generates this image:

Bar plot with both x and y axis labeled the same

UPD: added a simple example for subplots. You should use tick_params() with axis object.

This code sets to display only top labels for the top subplot and bottom labels for the bottom subplot (with corresponding ticks):

import matplotlib.pyplot as plt

f, axarr = plt.subplots(2)

axarr[0].bar(range(10), range(10))
axarr[0].tick_params(labelbottom=False, labeltop=True, labelleft=False, labelright=False,
                     bottom=False, top=True, left=False, right=False)

axarr[1].bar(range(10), range(10, 0, -1))
axarr[1].tick_params(labelbottom=True, labeltop=False, labelleft=False, labelright=False,
                     bottom=True, top=False, left=False, right=False)

Looks like this:

Subplots ticks config example


Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon