gfun_multimodal/plotters/distributions.py

61 lines
1.3 KiB
Python

import matplotlib.pyplot as plt
import datetime
def plot_distribution(
x,
y,
labels,
title,
figsize=(10, 5),
logscale=False,
notes="",
max_labels=-1,
save=False,
path=None,
):
# sort values and labels accordingly
y, labels = zip(*sorted(zip(y, labels), reverse=True))
if max_labels != -1:
x = x[:max_labels]
y = y[:max_labels]
labels = labels[:max_labels]
plt.figure(figsize=figsize)
plt.bar(x, y)
plt.xticks(x, labels, rotation=90)
if len(notes) != 0:
_title = f"{title} - {notes}"
if max_labels != -1:
_title += f" - Showing {max_labels} top labels"
plt.title(_title)
if logscale:
plt.yscale("symlog")
plt.tight_layout()
# plt.show()
if save:
now = datetime.datetime.now()
path = f"{path}/{title}_{now.strftime('%m%d_%H%M')}.png"
plt.savefig(path)
plt.close()
def plot_histogram(x, title, figsize=(10, 5), save=False, path=None):
plt.figure(figsize=figsize)
plt.hist(x)
# plt.xticks(x, lables, rotation=90)
plt.yscale("symlog")
plt.title(title)
# plt.show()
if save:
now = datetime.datetime.now()
path = f"{path}/{title}_{now.strftime('%m%d_%H%M')}.png"
plt.savefig(path)
plt.close()