59 lines
1.7 KiB
Python
59 lines
1.7 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
|
def create_bin_list(l_boundary, u_boundary, nbins=100):
|
|
"""
|
|
takes two boundaries and a number of bins and creates a list of bins for
|
|
histogram plotting
|
|
:param l_boundary: Any number.
|
|
:type l_boundary: float
|
|
:param u_boundary: Any number that is greater than l_boundary.
|
|
:type u_boundary: float
|
|
:param nbins: Any positive integer.
|
|
:type nbins: int
|
|
:return: A list of equidistant bins.
|
|
"""
|
|
if u_boundary <= l_boundary:
|
|
raise ValueError('Upper boundary must be greather than lower!')
|
|
elif nbins <= 0:
|
|
raise ValueError('Number of bins is not valid.')
|
|
binlist = []
|
|
for i in range(nbins):
|
|
binlist.append(l_boundary + i * (u_boundary - l_boundary) / nbins)
|
|
return binlist
|
|
|
|
|
|
def histplot(array, binlist, xlab='Values',
|
|
ylab='Frequency', title=None, fnout=None):
|
|
"""
|
|
function to quickly show some distribution of data. Takes array like data,
|
|
and a list of bins. Editing detail and inserting a legend is not possible.
|
|
:param array: List of values.
|
|
:type array: Array like
|
|
:param binlist: List of bins.
|
|
:type binlist: list
|
|
:param xlab: A label for the x-axes.
|
|
:type xlab: str
|
|
:param ylab: A label for the y-axes.
|
|
:type ylab: str
|
|
:param title: A title for the Plot.
|
|
:type title: str
|
|
:param fnout: A path to save the plot instead of showing.
|
|
Has to contain filename and type. Like: 'path/to/file.png'
|
|
:type fnout. str
|
|
:return: -
|
|
"""
|
|
|
|
plt.hist(array, bins=binlist)
|
|
plt.xlabel(xlab)
|
|
plt.ylabel(ylab)
|
|
if title:
|
|
plt.title(title)
|
|
if fnout:
|
|
plt.savefig(fnout)
|
|
else:
|
|
plt.show()
|