import matplotlib as mpl import plottools.plottools as pt from plottools.spines import spines_params from plottools.labels import labels_params from plottools.colors import lighter, darker def significance_str(p): if p > 0.05: return f'$p={p:.2f}$' elif p > 0.01: return '$p<0.05$' elif p > 0.001: return '$p<0.01$' else: return '$p<0.001$' def plot_style(): palette = pt.palettes['muted'] lwthick = 1.0 lwthin = 0.5 lwspines = 1.0 names = ['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'B4', 'C1', 'C2', 'C3', 'C4'] colors = [palette['red'], palette['orange'], palette['yellow'], palette['blue'], palette['purple'], palette['magenta'], palette['lightblue'], palette['lightgreen'], palette['green'], palette['darkgreen'], palette['cyan']] dashes = ['-', '-', '-', '-', '-', '-', '-.', '-', '-', '-', '-'] markers = [('o', 1.0), ('p', 1.1), ('h', 1.1), ((3, 1, 60), 1.25), ((3, 1, 0), 1.25), ((3, 1, 90), 1.25), ((3, 1, 30), 1.25), ('s', 0.9), ('D', 0.85), ('*', 1.6), ((4, 1, 45), 1.4)] class ns: pass ns.colors = palette ns.lwthick = lwthick ns.lwthin = lwthin ns.plot_width = 16.5 pt.make_linepointfill_styles(ns, names, colors, dashes, markers, lwthick=lwthick, lwthin=lwthin, markerlarge=5, markersmall=4, mec=0.0, mew=0.5, fillalpha=0.4) pt.make_line_styles(ns, 'ls', 'Spine', '', palette['black'], '-', lwspines, clip_on=False) pt.make_line_styles(ns, 'ls', 'Grid', '', palette['gray'], '--', 0.7*lwthin) pt.make_line_styles(ns, 'ls', 'Dotted', '', palette['gray'], ':', 0.7*lwthin) pt.make_line_styles(ns, 'ls', 'Marker', '', palette['black'], '-', lwthick, clip_on=False) pt.make_line_styles(ns, 'ls', 'Line', '', palette['black'], '-', lwthin) pt.make_line_styles(ns, 'ls', 'EOD', '', palette['gray'], '-', lwthin) pt.make_line_styles(ns, 'ls', 'AM', '', palette['red'], '-', lwthick) ns.model_color1 = palette['purple'] ns.model_color2 = lighter(ns.model_color1, 0.6) ns.punit_color1 = palette['blue'] ns.punit_color2 = lighter(ns.punit_color1, 0.6) ns.ampul_color1 = palette['green'] ns.ampul_color2 = lighter(ns.ampul_color1, 0.6) pt.make_line_styles(ns, 'ls', 'M%d', '', [ns.model_color1, ns.model_color2], '-', lwthick) pt.make_point_styles(ns, 'ps', 'M%d', '', [ns.model_color1, ns.model_color2], '-', markers=('o', 1), markersizes=4) pt.make_line_styles(ns, 'ls', 'P%d', '', [ns.punit_color1, ns.punit_color2], '-', lwthick) pt.make_point_styles(ns, 'ps', 'P%d', '', [ns.punit_color1, ns.punit_color2], '-', markers=('o', 1), markersizes=4) pt.make_line_styles(ns, 'ls', 'A%d', '', [ns.ampul_color1, ns.ampul_color2], '-', lwthick) pt.make_point_styles(ns, 'ps', 'A%d', '', [ns.ampul_color1, ns.ampul_color2], '-', markers=('o', 1), markersizes=4) pt.make_line_styles(ns, 'ls', 'Diag', '', palette['white'], '--', lwthin) pt.arrow_style(ns, 'Line', dist=3.0, style='>', shrink=0, lw=0.6, color=palette['black'], head_length=4, head_width=4, bbox=dict(boxstyle='round,pad=0.1', facecolor='white', edgecolor='none', alpha=1.0)) pt.arrow_style(ns, 'Hertz', dist=3.0, style='>', shrink=0, lw=0.6, color=palette['black'], head_length=3, head_width=3, heads='<>', text='%.0f\u2009Hz', rotation='vertical', fontsize='x-small', bbox=dict(boxstyle='round,pad=0.1', facecolor='white', edgecolor='none', alpha=0.6)) pt.arrow_style(ns, 'Point', dist=3.0, style='>>', shrink=0, lw=1.1, color=palette['black'], head_length=5, head_width=4) pt.arrow_style(ns, 'PointSmall', dist=3.0, style='>>', shrink=0, lw=1, color=palette['black'], head_length=5, head_width=5, fontsize='small') pt.arrow_style(ns, 'Marker', dist=3.0, style='>>', shrink=0, lw=0.9, color=palette['black'], head_length=5, head_width=5, fontsize='small', ha='center', va='center', bbox=dict(boxstyle='round, pad=0.1, rounding_size=0.4', facecolor=palette['white'], edgecolor='none', alpha=0.6)) # rc settings: mpl.rcdefaults() pt.axes_params(0.0, 0.0, 0.0, color='none') cmcolors = [pt.lighter(palette['yellow'], 0.2), pt.lighter(palette['orange'], 0.5), palette['orange'], palette['red'], palette['red']] cmvalues = [0.0, 0.3, 0.7, 0.95, 1.0] pt.colormap('YR', cmcolors, cmvalues) cycle_colors = ['blue', 'red', 'orange', 'lightgreen', 'magenta', 'yellow', 'cyan', 'pink'] pt.colors_params(palette, cycle_colors, 'RdYlBu') pt.figure_params(palette['white'], format='pdf', compression=6, fonttype=3, stripfonts=True) pt.labels_params('{label} [{unit}]', labelsize='medium', labelpad=6) pt.legend_params(fontsize='small', frameon=False, borderpad=0.0, handlelength=1.5, handletextpad=1, numpoints=1, scatterpoints=1, labelspacing=0.5, columnspacing=0.5) pt.scalebars_params(format_large='%.0f', format_small='%.1f', lw=2.2, color=palette['black'], capsize=0, clw=0.5, font=dict(fontsize='medium', fontstyle='normal')) pt.spines_params(spines='lb', spines_offsets={'lrtb': 3}, spines_bounds={'lrtb': 'full'}) pt.tag_params(xoffs='auto', yoffs='auto', label='%A', minor_label=r'%A$_{\text{%mi}}$', font=dict(fontsize='x-large', fontstyle='normal', fontweight='normal')) pt.text_params(font_size=7, font_family='sans-serif', latex=True, preamble=('p:sfmath', 'p:marvosym', 'p:xfrac', 'p:SIunits')) pt.ticks_params(xtick_dir='out', xtick_size=3) return ns