2017-05-10 3 views
0

J'utilise IPython Notebook. J'ai un tas de parcelles dans le même chiffre. Je dois montrer ces parcelles en utilisant des paramètres d'axes différents, à savoir, pour les suivants quatre cas:Comment redessiner un pyplot plusieurs fois pour différents paramètres d'axe

Cases x-axis y-axis 
1  non-log non-log 
2  non-log log 
3  log  non-log 
4  log  log 

est-il un moyen facile comme ceci:

#many lines of code for generating bunch of plots 
plt.show() 

#figure shown with non-log axis 

ax.set_yscale('log') 
plt.show() 

#figure shown with log y-axis  

ax.set_xscale('log') 
plt.show() 

#figure shown with log x-axis and log y-axis 

Répondre

1

plt.show() montrera la figure (s) et discartez-les ensuite. Il n'est pas destiné à être utilisé plusieurs fois dans un script.

Une option que vous avez serait de faire votre traçage dans une fonction et en fonction des arguments, créer une figure différente. Ce qui suit va créer des chiffres pour les 4 cas:

import matplotlib.pyplot as plt 
import numpy as np 

x = np.logspace(0,3, 250) 
y = .4*x 

def plot(x,y,logx=False, logy=False): 
    fig, ax = plt.subplots() 
    if logy: ax.set_yscale('log') 
    if logx: ax.set_xscale('log') 
    ax.plot(x,y) 


plot(x,y) 
plot(x,y, True, False) 
plot(x,y, False, True) 
plot(x,y, True, True) 

plt.show()