簡體   English   中英

由於SyntaxError而在3d wirefram圖(matplotlib)中交換軸:僅命名參數可以跟隨* expression

[英]swap axes in 3d wirefram plot (matplotlib) due to SyntaxError: only named arguments may follow *expression

我使用的是Python 3.4.3,無法升級系統。 我的問題是我想使用matplotlibmpl_toolkits.mplot3d生成3d線框圖

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

這個問題中我得到,在以前的Python 3.5中,僅允許將帶星號的表達式作為exprlist中的最后一項。

這樣做ax.plot_wireframe(b,*a, rstride=1, cstride=2) ,但這當然會在具有扭曲軸的圖中產生。

我的問題:是否可以從線框圖(eq 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它想要的東西(即命名參數)來規避該問題。 因此,該行現在顯示為:

ax.plot_wireframe(*a,Z=b)

如何使用itertools.chain b 鏈連接a並將它們itertools.chaina itertools.chain

from itertools import chain

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

如果a是一個列表或元組,那么您當然可以在將b放入b 類型 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM