Source code for autofit.non_linear.plot.mle_plotters
from autofit.non_linear.plot.plot_util import skip_in_test_mode, output_figure
[docs]
@skip_in_test_mode
def subplot_parameters(
samples,
use_log_y=False,
use_last_50_percent=False,
path=None,
filename="subplot_parameters",
format="show",
**kwargs,
):
import matplotlib.pyplot as plt
model = samples.model
parameter_lists = samples.parameters_extract
plt.subplots(model.total_free_parameters, 1, figsize=(12, 3 * len(parameter_lists)))
for i, parameters in enumerate(parameter_lists):
iteration_list = range(len(parameter_lists[0]))
plt.subplot(model.total_free_parameters, 1, i + 1)
if use_last_50_percent:
iteration_list = iteration_list[int(len(iteration_list) / 2) :]
parameters = parameters[int(len(parameters) / 2) :]
if use_log_y:
plt.semilogy(iteration_list, parameters, c="k")
else:
plt.plot(iteration_list, parameters, c="k")
plt.xlabel("Iteration", fontsize=16)
plt.ylabel(model.parameter_labels_with_superscripts_latex[i], fontsize=16)
plt.xticks(fontsize=16)
plt.yticks(fontsize=16)
actual_filename = filename
if use_log_y:
actual_filename += "_log_y"
if use_last_50_percent:
actual_filename += "_last_50_percent"
output_figure(path=path, filename=actual_filename, format=format)
[docs]
@skip_in_test_mode
def log_likelihood_vs_iteration(
samples,
use_log_y=False,
use_last_50_percent=False,
path=None,
filename="log_likelihood_vs_iteration",
format="show",
**kwargs,
):
import matplotlib.pyplot as plt
log_likelihood_list = samples.log_likelihood_list
iteration_list = range(len(log_likelihood_list))
if use_last_50_percent:
iteration_list = iteration_list[int(len(iteration_list) / 2) :]
log_likelihood_list = log_likelihood_list[int(len(log_likelihood_list) / 2) :]
plt.figure(figsize=(12, 12))
if use_log_y:
plt.semilogy(iteration_list, log_likelihood_list, c="k")
else:
plt.plot(iteration_list, log_likelihood_list, c="k")
plt.xlabel("Iteration", fontsize=16)
plt.ylabel("Log Likelihood", fontsize=16)
plt.xticks(fontsize=16)
plt.yticks(fontsize=16)
title = "Log Likelihood vs Iteration"
if use_log_y:
title += " (Log Scale)"
if use_last_50_percent:
title += " (Last 50 Percent)"
plt.title(title, fontsize=24)
actual_filename = filename
if use_log_y:
actual_filename += "_log_y"
if use_last_50_percent:
actual_filename += "_last_50_percent"
output_figure(path=path, filename=actual_filename, format=format)