0

Hi I am using Pythonista 3:0 on the ipad. As a beginner I downloaded examples to try out. They worked for a while but now lwhen I try to run them there is no response. All the sample programs in the original Phthonista install work perfectly.

This for example does not work. Nothing happens when I press the triangle. Thanks

# -*- 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()
Valavel
  • 3
  • 4

2 Answers2

0

In my opinion, matplotlib of Pythonista might be upgraded from 0.9x to 1.x. You should use different syntax as follows.

# -*- 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")
Jak Liao
  • 146
  • 1
  • 5
  • Thank you Jak Liao - I substituted the code you kindly provided but alas nothing happens it does not run – Valavel Oct 19 '16 at 23:11
0

Are you using the app store version of pythonista 3? or the beta version? Your code works perfectly well for me in the beta(if I uncomment the import Axes3D line, otherwise I get an error regarding an invalid projection)

I believe the app store version may have had issues with the python 3 version of matplotlib (for instance, using custom backends caused crashes). Try using the python 2.7 interpreter to see if that works.

Also, a common problem some people have is that they have created .py files in site packages or the same folder as their script that override some needed import. check your site packages and make sure you delete or rename any scripts or folders named numpy or matplotlib, then force-quit pythonista.

Finally, you might try running your script line to see if there is a problem somewhere. For instance place a breakpoint by longpressing, then when you press play it will ask you if you want to use the debugger. This will let you check that plt is the matplotlib.pyplot package from the private path, etc.

You may have also have better luck with pythonista questions over at the pythonista community forums or slack channel.

JonB
  • 350
  • 1
  • 7