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()