2011-12-26 1 views
7

Vorrei chiedere come produrre una trama simile a quella nella figura in basso? In pratica, come avere l'asse x nella parte superiore della figura. GrazieCome stampare con l'asse x nella parte superiore della figura?

enter image description here

Immagine da: http://oceanographyclay1987.blogspot.com/2010/10/light-attenuation-in-ocean.html

+0

difficile, probabilmente una combinazione di [questo esempio] (http://matplotlib.sourceforge.net/examples/axes_grid/simple_axisline4.html) e [questo] (http://matplotlib.sourceforge.net/examples/axes_grid/ demo_axisline_style.html) –

+0

Sì, l'uso di twin() è l'unica possibilità che vedo al momento. Mi stavo chiedendo se c'è una soluzione più semplice. Grazie – mikeP

risposta

9

Usa

ax.xaxis.set_ticks_position("top") 

Per esempio,

import numpy as np 
import matplotlib.pyplot as plt 

numdata = 100 
t = np.linspace(0, 100, numdata) 
y = 1/t**(1/2.0) 

fig = plt.figure() 
ax = fig.add_subplot(1, 1, 1) 
ax.xaxis.set_ticks_position('top') 
ax.yaxis.grid(linestyle = '-', color = 'gray') 
ax.invert_yaxis() 
ax.plot(t, y, 'g-', linewidth = 1.5) 

plt.show() 

enter image description here

+0

'ax.yaxis.grid (True, linestyle = '-')' per aggiungere linee orizzontali – jfs

+0

Wow, grazie. Questo è un modo elegante per farlo. – mikeP

+0

@ J.F.Sebastian: Grazie per il suggerimento. – unutbu