## Chapter II - Data visualization

### Homework 02

#### 2D & 3D Plots

On this activity is necessary to load data from files and plot it. This dataset corresponds to simulated trayectories that some particles describes near to a black hole.

``````

In [9]:

import numpy as np
import pylab as pl
import os
from mpl_toolkits.mplot3d import Axes3D

path = '/data/'
data = []
for f in os.listdir(os.getcwd()+path):
data.append(r)

``````

In our data set the first column corresponds to each iteration of the trayectory computed. The second column corresponds to \$t\$ which is the relativistic time, the second, third and fourth columns corresponds to the spatial coordinates \$x(t)\$, \$y(t)\$ and \$z(t)\$ respectively.

Let's plot \$t\$ vs \$x(t)\$ of the third file which corresponds to the Innermost Stable Circular Orbit (ISCO).

``````

In [26]:

# create fig
pl.rc('font',size=16)
pl.figure(figsize=(16,8))

#set plot limits
pl.xlim([0,1000])
pl.ylim([-6,6])

#set labels
pl.title('Oscilation of a particle in the ISCO')
pl.xlabel('\$t\$')
pl.ylabel('\$X(t)\$')

#set t & x(t)
t = data[2][:,1]
x = data[2][:,2]

#plot
pl.plot(t,x,'r', lw=1.0, label='\$n=1\$')
pl.show()

``````
``````

``````

Let's plot the spatial trayectories.

``````

In [28]:

#create figure
pl.rc('font',size=10)
fig = pl.figure(figsize=(9,8),dpi=600)
ax = fig.gca(projection='3d')

#draw lines
c = ['b','g','r','c','k']
labels = ['\$r=4M\$','\$r=5M\$','\$ISCO\$','\$r=6M\$','\$r=7M\$']
for i, d in enumerate(data):
ax.plot(d[:,2],d[:,3],d[:,4],c[i], label=labels[i])

#create and plot a sphere
r   = 2
pi  = np.pi
cos = np.cos
sin = np.sin
phi,theta = np.mgrid[0.0:pi:100j,0.0:2.0*pi:100j]
x = r*sin(phi)*cos(theta)
y = r*sin(phi)*sin(theta)
z = r*cos(phi)
ax.plot_surface(x,y,z, rstride=1,cstride=1,color='k', alpha=0.6,linewidth=0)

#set plot limits
ax.set_xlim3d([-8,8])
ax.set_ylim3d([-8,8])
ax.set_zlim3d([-7,7])

#labels
pl.title('Timelike geodesics in the Schwarzschild equatorial plane')
ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')
ax.set_zlabel('Z axis')
pl.show()

``````
``````

``````