0

こんにちは、iPad で Pythonista 3:0 を使用しています。初心者として、サンプルをダウンロードして試してみました。それらはしばらくの間機能していましたが、今はそれらを実行しようとしても応答がありません。元の Phthonista インストールのすべてのサンプル プログラムは完全に動作します。

たとえば、これは機能しません。三角を押しても何も起こりません。ありがとう

# -*- coding: utf-8 -*-from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
from itertools import product, combinations
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.set_aspect("equal")

#draw cube
r = [-1, 1]
for s, e in combinations(np.array(list(product(r,r,r))), 2): 
    if np.sum(np.abs(s-e)) == r[1]-r[0]: 
        ax.plot3D(*zip(s,e), color="b")

# draw sphere
u, v = np.mgrid[0:2*np.pi:20j, 0:np.pi:10j]
x=np.cos(u)*np.sin(v)
y=np.sin(u)*np.sin(v)
z=np.cos(v)
ax.plot_wireframe(x, y, z, color="r")

#draw a point
ax.scatter([0],[0],[0],color="g",s=100)

#draw a vector
from matplotlib.patches import FancyArrowPatch
from mpl_toolkits.mplot3d import proj3d

class Arrow3D(FancyArrowPatch):
    def __init__(self, xs, ys, zs, *args, **kwargs):
        FancyArrowPatch.__init__(self, (0,0), (0,0), *args, **kwargs)
        self._verts3d = xs, ys, zs

    def draw(self, renderer):
        xs3d, ys3d, zs3d = self._verts3d
        xs, ys, zs = proj3d.proj_transform(xs3d, ys3d, zs3d, renderer.M)
        self.set_positions((xs[0],ys[0]),(xs[1],ys[1]))
        FancyArrowPatch.draw(self, renderer)

a = Arrow3D([0,1],[0,1],[0,1], mutation_scale=20, lw=1, arrowstyle="-|>", color="k")
ax.add_artist(a)
plt.show()
4

2 に答える 2

0

私の意見では、Pythonista の matplotlib は 0.9x から 1.x にアップグレードされる可能性があります。次のように、別の構文を使用する必要があります。

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
from itertools import product, combinations

fig = plt.figure()
ax = Axes3D(fig)   ## it's different now.
ax.set_aspect("equal")
于 2016-10-19T13:02:17.110 に答える
0

pythonista 3 のアプリ ストア バージョンを使用していますか? またはベータ版?あなたのコードはベータ版で完全に機能します (インポート Axes3D 行のコメントを外すと、無効な投影に関するエラーが発生します)

アプリ ストアのバージョンでは、python 3 バージョンの matplotlib に問題があった可能性があると思います (たとえば、カスタム バックエンドを使用するとクラッシュが発生しました)。Python 2.7 インタープリターを使用して、それが機能するかどうかを確認してください。

また、一部の人が抱える一般的な問題は、サイト パッケージまたはスクリプトと同じフォルダーに .py ファイルを作成し、必要なインポートを上書きしてしまうことです。サイトのパッケージを確認し、numpy または matplotlib という名前のスクリプトまたはフォルダーを削除または名前変更してから、pythonista を強制終了してください。

最後に、スクリプト行を実行して、どこかに問題があるかどうかを確認してください。たとえば、長押ししてブレークポイントを配置し、再生を押すと、デバッガーを使用するかどうかを尋ねられます。これにより、plt がプライベート パスなどからの matplotlib.pyplot パッケージであることを確認できます。

また、pythonista コミュニティ フォーラムまたは slack チャネルで pythonista に関する質問に答えてください。

于 2016-11-19T20:35:32.833 に答える