2016-11-21 6 views
0

私はPython 3.4.3を使用しており、システムをアップグレードすることはできません。 私の問題は、私は私が前のPython 3.5は、スターを付けた表現のみexprlistで最後の項目として許可されていることを、取得this questionからmatplotlibmpl_toolkits.mplot3dSyntaxErrorによる3df wireframプロット(matplotlib)のスワップ軸:名前付き引数のみが続く場合があります*式

ax.plot_wireframe(*a,b, rstride=1, cstride=2) 
>> SyntaxError: only named arguments may follow *expression 

を使用した3Dワイヤーフレームグラフを生成するかしたいということです。

Doing ax.plot_wireframe(b,*a, rstride=1, cstride=2)が動作しますが、これはもちろん、ねじれた軸を持つプロットになります。

私の質問: wireframプロットから軸を交換するpossibiltyがあります(代わりに等量ax.plot_wireframe(Z,X,Y)(X,Y,Z)、または開梱

さらなる詳細は私の問題のために別の回避策があります:?

a = np.meshgrid(np.arange(ys.shape[0]),xs) 
b = ys.T 

print(ys.shape) 
>>(448, 33) 
print(ys.shape[0]) 
>>488 
print(b.shape) 
>>(33,448) 
print(xs.shape) 
>>(33,) 
は、

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~ 私は、問題を回避するために、Pythonに必要なもの、つまり名前付き引数を与えることで回避できました。 したがって、行は次のようになります。

は、リストやタプルであるならば、あなたはもちろん、単に bを入れた後、追加を使用することができます

from itertools import chain 

ax.plot_wireframe(*chain(a, (b,)), rstride=1, cstride=2) 

:どの程度チェーンbaからitertools.chainを使用し、1枚でそれらの両方を解凍

ax.plot_wireframe(*a,Z=b) 

答えて

1

タイプaのコンテナインチ


デモ:

>>> a = [1,2,3] 
>>> b = 4 
>>> print(*a, b) 
    File "<stdin>", line 1 
SyntaxError: only named arguments may follow *expression 
>>> print(b, *a) 
4 1 2 3 
>>> print(*chain(a, (b,))) 
1 2 3 4 
+0

ax.plot_wireframe(*チェーン(、(bが、)))ファイル「〜/ Pythonの-3.4.3/libに/ python3.4 /サイト・パッケージを生成します/matplotlib-1.4.3-py3.4-linux-x86_64.egg/mpl_toolkits/mplot3d/axes3d.py "、1775行目、plot_wireframe linec = art3d.Line3DCollection(lines、* args、** kwargs) ファイル" 〜/ Python-3.4.3/lib/python3.4/site-packages/matplotlib-1.4.3-py3.4-linux-x86_64.egg/mpl_toolkits/mplot3d/art3d.py "、行171、__init__ LineCollection .__ init __(自己、セグメント、* args、** kwargs) TypeError:_ _init __()は2から12の位置引数を取りますが、34が与えられました –

+0

@ t.rathjenデモを見てください。 –

+0

'a'にはいくつのオブジェクトがありますか? –

関連する問題