Source code for draugr.visualisation.seaborn_utilities.seaborn_utilities
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = "Christian Heider Nielsen"
__doc__ = r"""
Created on 18-02-2021
"""
from typing import Iterable, List
import numpy
import pandas
import seaborn
from matplotlib import pyplot
from matplotlib.axes import Axes
from warg import Number
__all__ = [
"despine_all",
"set_y_log_scale",
"exponential_moving_average",
]
[docs]def despine_all(ax: Axes = None) -> None:
"""
:param ax:
"""
if ax is None:
ax = pyplot.gca()
seaborn.despine(
ax=ax, top=True, right=True, left=True, bottom=True, offset=None, trim=False
)
[docs]def set_y_log_scale(ax: Axes = None) -> None:
"""
:param ax:
"""
if ax is None:
ax = pyplot.gca()
ax.set(yscale="log")
[docs]def exponential_moving_average(
scalars: Iterable[Number], decay: float = 0.4
) -> List[Number]:
"""
Like is usual in tensorboard visual rep just weight is inverse
:param decay:
:param scalars:
:return:
"""
if isinstance(scalars, numpy.ndarray):
assert len(scalars.shape) <= 1, "only support one dimensional series"
last = next(iter(scalars))
smoothed = list()
for new in scalars:
# 1st-order IIR low-pass filter to attenuate the higher-
# frequency components of the time-series.
smoothed_point = last * decay + new * (1.0 - decay)
smoothed.append(smoothed_point)
last = smoothed_point
return smoothed
if __name__ == "__main__":
def stest_box_plot_props() -> None:
"""
:rtype: None
"""
props = {
"boxprops": {"facecolor": "none", "edgecolor": "red"},
"medianprops": {"color": "green"},
"whiskerprops": {"color": "blue"},
"capprops": {"color": "yellow"},
}
seaborn.boxplot(
x="variable",
y="value",
data=pandas.DataFrame(
[range(3), range(3)], columns=("variable", "value", "value2")
),
showfliers=False,
linewidth=0.75,
**props
)
pyplot.show()
stest_box_plot_props()