1

私がやろうとしていることは、次のように書くことができます:

import pylab
class GetsDrawn(object):
    def __init__(self):
        self.x=some_function_that_returns_an_array()
        self.y=some_other_function_that_returns_an_array()

    # verison 1: pass in figure/subplot arguments
    def draw(self, fig_num, subplot_args ):
        pylab.figure(fig_num)
        pylab.subplot( *subplot_args )
        pylab.scatter( self.x, self.y)

つまり、フィギュア番号とサブプロット構成を介して、オブジェクトの「どこに」自分自身を描画するかを伝えることができました。

pylab オブジェクトを渡されたバージョンは、長期的にはより柔軟になると思いますが、関数に提供するオブジェクトのタイプがわかりません。

4

2 に答える 2

1

ですべての軸を初期化し__init__ます。それらをリストに保存しますself.ax。次に、drawメソッドで、描画コマンドを目的の軸オブジェクトに直接送信できます。

import matplotlib.pyplot as plt

class GetsDrawn(object):
    def __init__(self):
        self.x=some_function_that_returns_an_array()
        self.y=some_other_function_that_returns_an_array()
        self.ax = []
        for i in range(num_figures):
            fig = plt.figure(i)
            self.ax.append(plt.subplot(1, 1, 1))

    # verison 1: pass in figure/subplot arguments
    def draw(self, fig_num, subplot_args ):
        ax = self.ax[fig_num]
        ax.subplot( *subplot_args )
        ax.scatter( self.x, self.y)

ちなみに、pylabはインタラクティブ セッションには問題ありませんが、スクリプトには をお勧めしpyplotます。

于 2012-11-08T14:07:45.837 に答える
1

スクリプトの場合、通常はオブジェクト指向 API を使用することをお勧めします。

たとえば、関数が図を受け取るようにすることができます。

def draw(fig, sub_plot_args,x,y):
    ax = fig.subplot(*sub_plot_args)
    ax.scatter(x,y)

関数が実際に 1 つの軸のみを描画する場合は、それをオブジェクトとして渡すこともできます。

def draw(ax,x,y):

    ax.scatter(x,y)

Figure を作成するには:

import matplotlib.pyplot as plt
fig = plt.figure()

たとえば、1 つのサブプロットを含む Figure を作成するには、次を使用します。

fig, ax = plt.subplots()

私が間違っていなければ、最後のコマンドは最近のバージョンにのみ存在します。

于 2012-11-15T14:23:09.927 に答える