Source code for einsteinpy.plotting.rays.shadow

import numpy as np
from matplotlib import pyplot as plt


[docs] class ShadowPlotter: """ Class for plotting and visualising shadows """ def __init__(self, shadow, is_line_plot=True): """ Constructor for plotter. Parameters ---------- shadow : ~einsteinpy.rays.Shadow The shadow object is_line_plot : bool, optional If the plot is a line plot or a contour plot. Defaults to True. """ self.shadow = shadow self.is_intensity_plot = is_line_plot
[docs] def plot(self): """ Plots the shadow. """ if self.is_intensity_plot: plt.plot(self.shadow.fb1, self.shadow.intensity, "r") plt.plot(self.shadow.fb2, self.shadow.intensity, "r") plt.xlabel("Impact Paramter (b)") plt.ylabel("Intensity (Emissivity)") plt.title("Intensity Plot") else: theta1 = np.linspace(0, 2 * np.pi, len(self.shadow.fb1)) self.r1, self.theta1 = np.meshgrid(self.shadow.fb1, theta1) self.values1, self.values2 = np.meshgrid( self.shadow.intensity, self.shadow.intensity )
[docs] def show(self): """ Shows the plot. """ if self.is_intensity_plot: plt.show() else: xx = self.r1 * np.cos(self.theta1) yy = self.r1 * np.sin(self.theta1) plt.figure(figsize=(7, 7)) plt.pcolormesh(xx, yy, self.values1, cmap=plt.cm.afmhot, shading="gouraud") plt.title("Schwarzschild Black Hole") plt.gca().set_aspect("equal", adjustable="box")