analysis.antennaeKDE
module
Plots the Antennae using Kernel Density Estimation to map the density
Source code
"""Plots the Antennae using Kernel Density Estimation to map the density"""
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import gaussian_kde
from analysis.colormaps import red_map
from analysis import utils
def plotKDE(i, theta, phi, view):
"""Plot the Antennae galaxies using kernel density estimation
Parameters:
i (int): Timestep at which to plot them
theta (float): polar angle
phi (float): azimuthal angle
view (float): rotation along the line of sight
"""
data = utils.loadData('antennae', 13500)
r_vec = data['r_vec'][::]
# Rotate to view from (theta, phi, view) viewpoint
M1 = np.array([[1, 0, 0],
[0, np.cos(theta), np.sin(theta)],
[0, -np.sin(theta), np.cos(theta)]])
M2 = np.array([[np.cos(phi), np.sin(phi), 0],
[-np.sin(phi), np.cos(phi), 0],
[0, 0, 1]])
M3 = np.array([[np.cos(view), np.sin(view), 0],
[-np.sin(view), np.cos(view), 0],
[0, 0, 1]])
M = np.matmul(M2, np.matmul(M1, M3))
r_vec = np.tensordot(r_vec, M, axes=[1,0])
# Plotting
plt.figure(figsize=(4,5), dpi=400)
# Perform Kernel Density Estimation to colour by density
xy = np.vstack([r_vec[:,0],r_vec[:,1]])
c = gaussian_kde(xy)(xy)
# Densest points are plotted last
idx = c.argsort()
x, y, c = r_vec[:,0][idx], r_vec[:,1][idx], c[idx]
plt.scatter(x, y, c=c, s=3, edgecolor='', cmap=red_map)
plt.axis('square')
plt.show()
plotKDE(135, 1.86, 4.10, 5.10)
Functions
def plotKDE(i, theta, phi, view)
-
Plot the Antennae galaxies using kernel density estimation
Parameters
i
:int
- Timestep at which to plot them
theta
:float
- polar angle
phi
:float
- azimuthal angle
view
:float
- rotation along the line of sight
Source code
def plotKDE(i, theta, phi, view): """Plot the Antennae galaxies using kernel density estimation Parameters: i (int): Timestep at which to plot them theta (float): polar angle phi (float): azimuthal angle view (float): rotation along the line of sight """ data = utils.loadData('antennae', 13500) r_vec = data['r_vec'][::] # Rotate to view from (theta, phi, view) viewpoint M1 = np.array([[1, 0, 0], [0, np.cos(theta), np.sin(theta)], [0, -np.sin(theta), np.cos(theta)]]) M2 = np.array([[np.cos(phi), np.sin(phi), 0], [-np.sin(phi), np.cos(phi), 0], [0, 0, 1]]) M3 = np.array([[np.cos(view), np.sin(view), 0], [-np.sin(view), np.cos(view), 0], [0, 0, 1]]) M = np.matmul(M2, np.matmul(M1, M3)) r_vec = np.tensordot(r_vec, M, axes=[1,0]) # Plotting plt.figure(figsize=(4,5), dpi=400) # Perform Kernel Density Estimation to colour by density xy = np.vstack([r_vec[:,0],r_vec[:,1]]) c = gaussian_kde(xy)(xy) # Densest points are plotted last idx = c.argsort() x, y, c = r_vec[:,0][idx], r_vec[:,1][idx], c[idx] plt.scatter(x, y, c=c, s=3, edgecolor='', cmap=red_map) plt.axis('square') plt.show()