In [1]:
%matplotlib inline
from math import *
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

In [56]:
from numpy import linspace,pi,cos,sin

phi = np.linspace(0,2*pi,100)
x = sin(phi)+2*sin(2*phi)
y = cos(phi)-2*cos(2*phi)
z = -sin(3*phi)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

ax.scatter(x,y,z, c=x,edgecolor='w')
ax.scatter(x/1.3, y/1.2, z/1.3, c=x, edgecolor='w', cmap=plt.cm.gist_rainbow_r)
#scatter(x/1.8,y/1.5,c=x,s=s,edgecolor='w',cmap=cm.gist_rainbow)
plt.show()



In [61]:
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')


for t in range(1000000):
    phi = np.random.uniform(low=0, high=2*pi)
    x = np.random.uniform(low=-3, high=3)
    y = np.random.uniform(low=-3, high=3)
    z = np.random.uniform(low=-1.5, high=1.5)
    margin=1.2
    if sin(phi)+2*sin(2*phi)/margin < x < sin(phi)+2*sin(2*phi)*margin:
        if cos(phi)-2*cos(2*phi)/margin < y < cos(phi)-2*cos(2*phi)*margin:
            if -sin(3*phi)/margin < z < -sin(3*phi)*margin:
                #print z
                ax.scatter(x,y,z, c=sin(phi)+2*sin(2*phi), cmap=plt.cm.gist_rainbow)
plt.show()



In [ ]: