78 lines
2.5 KiB
Python
Executable File
78 lines
2.5 KiB
Python
Executable File
import os
|
|
|
|
import numpy
|
|
import matplotlib as mpl
|
|
from matplotlib import pyplot
|
|
from cycler import cycler
|
|
|
|
from .xmgrace import export_to_agr, load_agr_data
|
|
from .tud import tudcolors, nominal_colors, sequential_colors
|
|
from .utils import facet_plot, CurvedText as curved_text
|
|
|
|
|
|
def activate(scheme='b', full=False, sequential=False, cmap='blue-red', **kwargs):
|
|
"""
|
|
Activate the tud design.
|
|
|
|
Args:
|
|
scheme (opt.): Color scheme to activate, default is 'b'.
|
|
full (opt.):
|
|
Activate the full color palette. If False a smaller color palette is used.
|
|
If a number N is given, N colors will be chosen based on a interpolation of
|
|
all tudcolors.
|
|
sequential (opt.): Activate a number of sequential colors from a color map.
|
|
cmap (opt.):
|
|
Colormap to use for sequential colors, can be either from `~tudplot.tud.cmaps`
|
|
or any matplotlib color map. Range of the color map values can be given as
|
|
cmap_min and cmap_max, respectively.
|
|
**kwargs: Any matplotlib rc paramter may be given as keyword argument.
|
|
"""
|
|
mpl.pyplot.style.use(os.path.join(os.path.dirname(__file__), 'tud.mplstyle'))
|
|
|
|
if full:
|
|
if isinstance(full, int):
|
|
cmap = mpl.colors.LinearSegmentedColormap.from_list('tud{}'.format(scheme),
|
|
tudcolors[scheme])
|
|
colors = [cmap(x) for x in numpy.linspace(0, 1, full)]
|
|
else:
|
|
colors = tudcolors[scheme]
|
|
elif sequential:
|
|
colors = sequential_colors(sequential, cmap=cmap, min=kwargs.pop('cmap_min', 0),
|
|
max=kwargs.pop('cmap_max', 1))
|
|
else:
|
|
colors = nominal_colors[scheme]
|
|
|
|
mpl.rcParams['axes.prop_cycle'] = cycler('color', colors)
|
|
|
|
|
|
def saveagr(filename, figure=None, convert_latex=True):
|
|
"""
|
|
Save the current figure in xmgrace format.
|
|
|
|
Args:
|
|
filename: Agrfile to save the figure to
|
|
figure (opt.):
|
|
Figure that will be saved, if not given the current figure is saved
|
|
"""
|
|
figure = figure or pyplot.gcf()
|
|
figure.canvas.draw()
|
|
export_to_agr(figure, filename, convert_latex=convert_latex)
|
|
|
|
|
|
def markfigure(x, y, s, ax=None, **kwargs):
|
|
if ax is None:
|
|
ax = pyplot.gca()
|
|
kwargs['transform'] = ax.transAxes
|
|
kwargs['ha'] = 'center'
|
|
kwargs['va'] = 'center'
|
|
# kwargs.setdefault('fontsize', 'large')
|
|
ax.text(x, y, s, **kwargs)
|
|
|
|
|
|
def marka(x, y):
|
|
markfigure(x, y, '(a)')
|
|
|
|
|
|
def markb(x, y):
|
|
markfigure(x, y, '(b)')
|