2

Matplotlib でプロットを生成するためのラッパーを作成しています。プロットを作成する軸をオプションで指定できるようにしたいと考えています。

たとえば、私は持っています:

def plotContourf(thing, *argv, **kwargs):
    return plt.tricontourf(thing[0], thing[1], thing[2], *argv, **kwargs)

def plotScatter(thing, *argv, **kwargs )
    return plt.scatter(thing[0], thing[1], *argv, **kwargs)

fig, ((ax0,ax1),(ax2,ax3)) = plt.subplots(2,2)

plotContourf(some_thing, axes=ax0)
plotScatter(some_thing, axes=ax2)

どちらが実行されますが、すべてが最後の軸 (ax3) にプロットされ、axes kwargument で指定された軸にはプロットされません。(ここにエラーはありません。間違った軸に表示されるだけです)

好奇心のために、私がこれをやりたい理由は、ユーザーが軸を設定できるようにするためです。または、怠惰な人のために、軸を指定せずに plotContourf() を呼び出すだけで、 plt.show( )

一方、私は試しました

def plotContourf(thing, axes=None, *argv, **kwargs):
    if axes is None:
        fig, axes = plt.subplots()

    return axes.tricontourf(thing[0], thing[1], thing[2], *argv, **kwargs)

しかし、私は得る:

TypeError: plotContourf() がキーワード引数 'axes' に複数の値を取得しました

このエラーは、「axes」がすでにキーワード引数になっていることが原因であることを理解しています。別のキーワードを使用できることはわかっていますが、axes kwarg の用途は何ですか?

ありがとう!

編集: 完全なトレースバック (上記の 2 番目のオプションの場合):

Traceback (most recent call last):
  File "mods.py", line 51, in <module>
    adcirc.plotContourf(hsofs_mesh, -1*hsofs_mesh['depth'], axes=ax0)
TypeError: plotContourf() got multiple values for keyword argument 'axes'

そして実際のラッパー:

def plotContourf(grid, axes=None, *argv, **kwargs): 
    if axes is None:
        fig, axes = plt.subplot()
    return axes.tricontourf(grid['lon'], grid['lat'], grid['Elements']-1, *argv, **kwargs)
4

2 に答える 2