two scales in the same plot

Hi,

is there a way to have one plot with two functions, one using some
scale, the other one a different scale and show for example one scale
on the left, the other scale on the right?

I want to plot an atomic potential (one scale) and the corresponding
wave functions (different scale) in the same plot. I tried to look
through all examples and search this list, but didn't find anything.

Thanks a lot,
Ondrej

Hi Ondrej,
nice to see you here :slight_smile:

Hi,

is there a way to have one plot with two functions, one using some
scale, the other one a different scale and show for example one scale
on the left, the other scale on the right?

sure, twinx() is what you're looking for; here is a simple example:

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0., np.e, 0.01)
y1 = np.exp(-x)
y2 = np.log(x)
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(x, y1)
ax1.set_ylabel('Y values for exp(-x)')
ax2 = ax1.twinx()
ax2.plot(x, y2, 'r')
ax2.set_xlim([0,np.e])
ax2.set_ylabel('Y values for ln(x)')
ax2.set_xlabel('Same X for both exp(-x) and ln(x)')

The values on X has to be of the same scale, tough, else the graph
would look really weird.

Cheers,

···

On Fri, Apr 24, 2009 at 22:02, Ondrej Certik <ondrej@...2033...> wrote:
--
Sandro Tosi (aka morph, morpheus, matrixhasu)
My website: http://matrixhasu.altervista.org/
Me at Debian: http://wiki.debian.org/SandroTosi

Look at pyplot.twinx() or pyplot.twiny()

Ryan

···

On Fri, Apr 24, 2009 at 3:02 PM, Ondrej Certik <ondrej@…2033…> wrote:

Hi,

is there a way to have one plot with two functions, one using some

scale, the other one a different scale and show for example one scale

on the left, the other scale on the right?

I want to plot an atomic potential (one scale) and the corresponding

wave functions (different scale) in the same plot. I tried to look

through all examples and search this list, but didn’t find anything.


Ryan May
Graduate Research Assistant
School of Meteorology

University of Oklahoma
Sent from Norman, Oklahoma, United States

Hi Ondrej,
nice to see you here :slight_smile:

Nice to see you too! :slight_smile:

Hi,

is there a way to have one plot with two functions, one using some
scale, the other one a different scale and show for example one scale
on the left, the other scale on the right?

sure, twinx() is what you're looking for; here is a simple example:

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0., np.e, 0.01)
y1 = np.exp(-x)
y2 = np.log(x)
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(x, y1)
ax1.set_ylabel('Y values for exp(-x)')
ax2 = ax1.twinx()
ax2.plot(x, y2, 'r')
ax2.set_xlim([0,np.e])
ax2.set_ylabel('Y values for ln(x)')
ax2.set_xlabel('Same X for both exp(-x) and ln(x)')

The values on X has to be of the same scale, tough, else the graph
would look really weird.

Thanks a lot for the code. That worked. I was meeting some deadline,
so I forgot to reply that it worked.

Thanks Ryan and Jouni as well!

Ondrej

···

On Fri, Apr 24, 2009 at 1:10 PM, Sandro Tosi <morph@...10...> wrote:

On Fri, Apr 24, 2009 at 22:02, Ondrej Certik <ondrej@...2033...> wrote: