2017-11-15 6 views
-1

同じプロットで複数の線を捨てたい場合は、pyplot.plot(x,y)を何度も呼び出してからpyplot.show()でプロットを表示することができます。しかし、私がプロットする関数を定義し、その関数を複数回呼び出すと、同じプロットに複数の線があるのではなく、複数のプロットが得られます。たとえば:同じプロットに複数の線を描画する関数からpyplotを呼び出す

import numpy as np 
import matplotlib.pyplot as plt 

def plotsub(x, y): 
    plt.plot(x, y) 
    plt.show() 

x = np.arange(0,10,1); 
y = x*x 
plt.plot(x,y) 
plt.plot(x*10,y) 
plt.show() 

plotsub(x,y) 
plotsub(x*10,y) 

は、上記のコードの出力は次のようである:enter image description here

しかし、私はちょうどplt.plot複数回の行為を呼び出す方法として動作するようにplotsubを2回呼び出しをしたいと思います。

基本的に、私はpyplotが引数として関数に送信するハンドルを取得しようとしていますが、これはどのように行うべきかわかりません。

答えて

2

あなたのplotsub機能にはplt.show()が含まれているからです。したがって、plotsubを呼び出すたびに、matplotlibは期待通りにプロットを表示します。

あなただけplotsubにすべてのあなたのコールの後、プロットを表示したい場合は、関数の外ということに移動できます。また

import numpy as np 
import matplotlib.pyplot as plt 

def plotsub(x, y): 
    plt.plot(x, y) 

x = np.arange(0,10,1); 
y = x*x 

plotsub(x,y) 
plotsub(x*10,y) 
plt.show() 

、あなたはそう、関数の中にそれを残して、それは、オプションの作ることができますあなたはplotsubへの最後の呼び出しでのみ表示されます。以下のような何か:

import numpy as np 
import matplotlib.pyplot as plt 

def plotsub(x, y, show=False): 
    plt.plot(x, y) 
    if show: 
     plt.show() 

x = np.arange(0,10,1); 
y = x*x 

plotsub(x, y) 
plotsub(x*10, y, show=True) 

最後に、あなたが機能にプロットラインへの参照を取得するには、あなたreturnことができ、その関数から、そのような:

def plotsub(x, y, show=False): 
    line, = plt.plot(x, y) 
    if show: 
     plt.show() 
    return line 

l1 = plotsub(x, y) 
+0

素晴らしい、ありがとう! しかし、一般的には、コードの他の部分で後で使用できるように、プロットへの参照を取得する方法はありますか? – Ahmedov

+2

はい、関数からその値を返すことができます。上記の編集を参照してください。 – tom

+0

ラインオブジェクトを返すとても良いアイデア! –

関連する問題