2016-11-21 5 views
0

저는 Python 3.4.3을 사용 중이므로 시스템을 업그레이드 할 수 없습니다. 내 문제는 내가 얻을 this question에서 matplotlibmpl_toolkits.mplot3dSyntaxError로 인해 3d wirefram plot (matplotlib)을 바꿉니다. 명명 된 인수 만 따를 수 있습니다. * 표현

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

를 사용하여 3 차원 와이어 프레임 플롯을 생성 할 것인지, 즉 이전에 파이썬 3.5 별표 표현 만 exprlist의 마지막 항목으로 허용됩니다.

Doing ax.plot_wireframe(b,*a, rstride=1, cstride=2)은 작동하지만, 물론 꼬인 축이있는 플롯에서 나타납니다.

내 질문 : wirefram 플롯에서 축 교환하는 possibilty이 있습니까 (대신 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,) 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~ 필자는 파이썬에게 원하는 인수, 즉 명명 된 인수를 제공함으로써 문제를 회피 할 수있었습니다. 그래서 이제는 줄을 읽습니다 :

,451,515,
ax.plot_wireframe(*a,Z=b) 

답변

1

어떻게bitertools.chain를 사용하여 한 조각에 둘 다 풀어 a에 체인 에 대해 : a 목록 또는 튜플이

from itertools import chain 

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

경우 물론 단순히 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 
+0

ax.plot_wireframe (* 체인 (A, (b는)))가 산출 파일 "~/파이썬-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 (줄, * 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 __ (자기 세그먼트, 인수 *, ** kwargs로) 오류 : _ _init __() 2 (12)에 위치 인수에서 걸리지 만 t.rathjen 데모에서보세요 @ 34 –

+0

을 받았다. –

+0

얼마나 많은 개체를 당신은'A'에서해야합니까? –

관련 문제