mirror of
https://codeberg.org/Yael-II/Matplotlib-Style.git
synced 2026-03-15 05:46:26 +01:00
Compare commits
5 Commits
e5f53bc7e5
...
dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5176a31a9f | ||
|
|
b58b2f02a8 | ||
|
|
b3bca439b1 | ||
|
|
663ba89576 | ||
|
|
502af89000 |
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
#[TLP:AMBER] LIMITED DISTRIBUTION: WORK IN PROGRESS
|
#[TLP:CLEAR] UNLIMITED DISTRIBUTION
|
||||||
"""
|
"""
|
||||||
manchot_plot.py
|
manchot_plot.py
|
||||||
|
|
||||||
@@ -52,13 +52,20 @@ class ManchotRC:
|
|||||||
self.n_cols = 1
|
self.n_cols = 1
|
||||||
self.aspect = 3/2
|
self.aspect = 3/2
|
||||||
|
|
||||||
|
self.page_linewidth = (self.paper[0] - self.margin_left - self.margin_right)
|
||||||
|
self.page_textwidth = self.page_linewidth/self.n_cols - self.margin_cols*(self.n_cols - 1)
|
||||||
# Global parameters
|
# Global parameters
|
||||||
self.linewidth = 2
|
self.linewidth = 2
|
||||||
self.markersize = 3
|
self.markersize = 3
|
||||||
|
self.pad = 3.5
|
||||||
|
self.joinstyle = "round"
|
||||||
|
|
||||||
|
|
||||||
|
self.fig_x = self.page_textwidth
|
||||||
|
self.fig_y = self.fig_x / self.aspect
|
||||||
|
|
||||||
# Colours
|
# Colours
|
||||||
self.colour_fg = "#000000"
|
self.colour_fg = "#000000"
|
||||||
self.colour_mg = "#7F7F7F"
|
|
||||||
self.colour_bg = "#FFFFFF"
|
self.colour_bg = "#FFFFFF"
|
||||||
self.colours = [c.signal_blue,
|
self.colours = [c.signal_blue,
|
||||||
c.signal_orange,
|
c.signal_orange,
|
||||||
@@ -69,19 +76,34 @@ class ManchotRC:
|
|||||||
c.signal_pink,
|
c.signal_pink,
|
||||||
c.signal_grey]
|
c.signal_grey]
|
||||||
|
|
||||||
|
self.colour_fg_rgb = np.array(mpl.colors.to_rgb(self.colour_fg))
|
||||||
|
self.colour_bg_rgb = np.array(mpl.colors.to_rgb(self.colour_bg))
|
||||||
|
|
||||||
|
self.colour_mg_rgb = np.mean([self.colour_fg_rgb, self.colour_bg_rgb],
|
||||||
|
axis=0)
|
||||||
|
self.colour_mg = mpl.colors.to_hex(self.colour_mg_rgb)
|
||||||
|
|
||||||
|
self.colour_mbg_rgb = np.mean([self.colour_mg_rgb, self.colour_bg_rgb],
|
||||||
|
axis=0)
|
||||||
|
self.colour_mbg = mpl.colors.to_hex(self.colour_mbg_rgb)
|
||||||
|
|
||||||
|
self.colour_mfg_rgb = np.mean([self.colour_mg_rgb, self.colour_fg_rgb],
|
||||||
|
axis=0)
|
||||||
|
self.colour_mfg = mpl.colors.to_hex(self.colour_mfg_rgb)
|
||||||
|
|
||||||
# Lines
|
# Lines
|
||||||
self.lines_linewidth = self.linewidth
|
self.lines_linewidth = self.linewidth
|
||||||
self.lines_markersize = self.markersize
|
self.lines_markersize = self.markersize
|
||||||
self.lines_linestyle = "-"
|
self.lines_linestyle = "-"
|
||||||
self.lines_marker = ""
|
self.lines_marker = ""
|
||||||
self.lines_markeredgewidth = self.linewidth/2
|
self.lines_markeredgewidth = self.linewidth/2
|
||||||
self.lines_dash_joinstyle = "round"
|
self.lines_dash_joinstyle = self.joinstyle
|
||||||
self.lines_dash_capstyle = "round"
|
self.lines_dash_capstyle = self.joinstyle
|
||||||
self.lines_solid_joinstyle = "round"
|
self.lines_solid_joinstyle = self.joinstyle
|
||||||
self.lines_solid_capstyle = "round"
|
self.lines_solid_capstyle = self.joinstyle
|
||||||
self.lines_color = self.colours[0]
|
self.lines_color = self.colours[0]
|
||||||
self.lines_markerfacecolor = "auto"
|
self.lines_markerfacecolor = "auto"
|
||||||
self.lines_markeredgecolor = "auto"
|
self.lines_markeredgecolor = self.lines_markerfacecolor
|
||||||
|
|
||||||
# Patches
|
# Patches
|
||||||
self.patch_linewidth = self.linewidth
|
self.patch_linewidth = self.linewidth
|
||||||
@@ -184,11 +206,11 @@ class ManchotRC:
|
|||||||
self.axes_titley = None
|
self.axes_titley = None
|
||||||
self.axes_titlesize = "medium"
|
self.axes_titlesize = "medium"
|
||||||
self.axes_titleweight = "normal"
|
self.axes_titleweight = "normal"
|
||||||
self.axes_titlepad = 6.0
|
self.axes_titlepad = self.pad
|
||||||
self.axes_labelsize = "medium"
|
self.axes_labelsize = "medium"
|
||||||
self.axes_labelweight = "normal"
|
self.axes_labelweight = "normal"
|
||||||
self.axes_labelpad = 4.0
|
self.axes_labelpad = self.pad
|
||||||
self.axes_axisbelow = "line"
|
self.axes_axisbelow = True
|
||||||
self.axes_facecolor = self.colour_bg
|
self.axes_facecolor = self.colour_bg
|
||||||
self.axes_edgecolor = self.colour_fg
|
self.axes_edgecolor = self.colour_fg
|
||||||
self.axes_titlecolor = self.axes_edgecolor
|
self.axes_titlecolor = self.axes_edgecolor
|
||||||
@@ -216,26 +238,155 @@ class ManchotRC:
|
|||||||
|
|
||||||
self.axes3d_grid = True
|
self.axes3d_grid = True
|
||||||
self.axes3d_automargin = False
|
self.axes3d_automargin = False
|
||||||
self.axes3d_xaxis_panecolor = (0.95,0.95,0.95,0.5)
|
self.axes3d_xaxis_panecolor = np.concatenate([self.colour_mg_rgb, [0.05]])
|
||||||
self.axes3d_yaxis_panecolor = (0.90,0.90,0.90,0.5)
|
self.axes3d_yaxis_panecolor = np.concatenate([self.colour_mg_rgb, [0.10]])
|
||||||
self.axes3d_zaxis_panecolor = (0.925,0.925,0.925,0.5)
|
self.axes3d_zaxis_panecolor = np.concatenate([self.colour_mg_rgb, [0.15]])
|
||||||
self.axes3d_mouserotationstyle = "arcball"
|
self.axes3d_mouserotationstyle = "trackball"
|
||||||
self.axes3d_trackballsize = 0.667
|
self.axes3d_trackballsize = 0.667
|
||||||
self.axes3d_trackballborder = 0.2
|
self.axes3d_trackballborder = 0.2
|
||||||
|
|
||||||
|
# Axis
|
||||||
|
self.xaxis_labellocation = "center"
|
||||||
|
self.yaxis_labellocation = "center"
|
||||||
|
|
||||||
|
# Dates
|
||||||
|
self.date_autoformatter_year = "%Y"
|
||||||
|
self.date_autoformatter_month = "%Y-%m"
|
||||||
|
self.date_autoformatter_day = "%Y-%m-%d"
|
||||||
|
self.date_autoformatter_hour = "%m-%d%H"
|
||||||
|
self.date_autoformatter_minute = "%d%H:%M"
|
||||||
|
self.date_autoformatter_second = "%H:%M:%S"
|
||||||
|
self.date_autoformatter_microsecond = "%M:%S.%f"
|
||||||
|
self.date_converter = "auto"
|
||||||
|
self.date_interval_multiples = True
|
||||||
|
|
||||||
# XXX START BACK HERE
|
# Ticks
|
||||||
|
self.xtick_top = True
|
||||||
|
self.xtick_bottom = True
|
||||||
|
self.xtick_labeltop = False
|
||||||
|
self.xtick_labelbottom = True
|
||||||
|
self.xtick_major_size = self.linewidth*2
|
||||||
|
self.xtick_minor_size = self.xtick_major_size/2
|
||||||
|
self.xtick_major_width = self.linewidth/2
|
||||||
|
self.xtick_minor_width = self.xtick_major_width
|
||||||
|
self.xtick_major_pad = self.pad
|
||||||
|
self.xtick_minor_pad = self.pad
|
||||||
|
self.xtick_color = self.colour_fg
|
||||||
|
self.xtick_labelcolor = self.xtick_color
|
||||||
|
self.xtick_labelsize = "medium"
|
||||||
|
self.xtick_direction = "in"
|
||||||
|
self.xtick_minor_visible = False
|
||||||
|
self.xtick_major_top = True
|
||||||
|
self.xtick_major_bottom = True
|
||||||
|
self.xtick_minor_top = True
|
||||||
|
self.xtick_minor_bottom = True
|
||||||
|
self.xtick_minor_ndivs = "auto"
|
||||||
|
self.xtick_alignment = "center"
|
||||||
|
|
||||||
|
self.ytick_left = self.xtick_bottom
|
||||||
|
self.ytick_right = self.xtick_top
|
||||||
|
self.ytick_labelleft = self.xtick_labelbottom
|
||||||
|
self.ytick_labelright = self.xtick_labeltop
|
||||||
|
self.ytick_major_size = self.xtick_major_size
|
||||||
|
self.ytick_minor_size = self.xtick_minor_size
|
||||||
|
self.ytick_major_width = self.xtick_major_width
|
||||||
|
self.ytick_minor_width = self.xtick_minor_width
|
||||||
|
self.ytick_major_pad = self.xtick_major_pad
|
||||||
|
self.ytick_minor_pad = self.xtick_minor_pad
|
||||||
|
self.ytick_color = self.xtick_color
|
||||||
|
self.ytick_labelcolor = self.xtick_labelcolor
|
||||||
|
self.ytick_labelsize = self.xtick_labelsize
|
||||||
|
self.ytick_direction = self.xtick_direction
|
||||||
|
self.ytick_minor_visible = self.xtick_minor_visible
|
||||||
|
self.ytick_major_left = self.xtick_major_bottom
|
||||||
|
self.ytick_major_right = self.xtick_major_top
|
||||||
|
self.ytick_minor_left = self.xtick_minor_bottom
|
||||||
|
self.ytick_minor_right = self.xtick_minor_top
|
||||||
|
self.ytick_minor_ndivs = self.xtick_minor_ndivs
|
||||||
|
self.ytick_alignment = "center_baseline"
|
||||||
|
|
||||||
|
# Grids
|
||||||
|
self.grid_color = self.colour_mbg
|
||||||
|
self.grid_linestyle = ":"
|
||||||
|
self.grid_linewidth = self.linewidth/2
|
||||||
|
self.grid_alpha = 1
|
||||||
|
|
||||||
|
# Legend
|
||||||
|
self.legend_loc = "best"
|
||||||
|
self.legend_frameon = True
|
||||||
|
self.legend_framealpha = 0.8
|
||||||
|
self.legend_facecolor = self.colour_bg
|
||||||
|
self.legend_edgecolor = self.colour_mbg
|
||||||
|
self.legend_fancybox = True
|
||||||
|
self.legend_shadow = False
|
||||||
|
self.legend_numpoints = 1
|
||||||
|
self.legend_scatterpoints = 1
|
||||||
|
self.legend_markerscale = 1.0
|
||||||
|
self.legend_fontsize = "medium"
|
||||||
|
self.legend_labelcolor = self.colour_fg
|
||||||
|
self.legend_title_fontsize = None
|
||||||
|
|
||||||
|
self.legend_borderpad = 0.4
|
||||||
|
self.legend_labelspacing = 0.5
|
||||||
|
self.legend_handlelength = 2.0
|
||||||
|
self.legend_handleheight = 0.7
|
||||||
|
self.legend_handletextpad = 0.8
|
||||||
|
self.legend_borderaxespad = 0.5
|
||||||
|
self.legend_columnspacing = 2.0
|
||||||
|
|
||||||
# Figure
|
# Figure
|
||||||
|
self.figure_titlesize = "medium"
|
||||||
|
self.figure_titleweight = "normal"
|
||||||
|
self.figure_labelsize = "medium"
|
||||||
|
self.figure_labelweight = "normal"
|
||||||
|
|
||||||
|
self.figure_figsize = self.fig_x, self.fig_y
|
||||||
self.figure_dpi = 150
|
self.figure_dpi = 150
|
||||||
|
self.figure_facecolor = self.colour_bg
|
||||||
|
self.figure_edgecolor = self.colour_bg
|
||||||
|
self.figure_frameon = True
|
||||||
|
self.figure_subplot_left = 0.125
|
||||||
|
self.figure_subplot_right = 0.9
|
||||||
|
self.figure_subplot_bottom = 0.11
|
||||||
|
self.figure_subplot_top = 0.88
|
||||||
|
self.figure_subplot_wspace = 0.2
|
||||||
|
self.figure_subplot_hspace = 0.2
|
||||||
|
self.figure_autolayout = False
|
||||||
|
self.figure_constrained_layout_use = True
|
||||||
|
self.figure_constrained_layout_h_pad = 0.04
|
||||||
|
self.figure_constrained_layout_w_pad = 0.04
|
||||||
|
self.figure_constrained_layout_hspace = 0.02
|
||||||
|
self.figure_constrained_layout_wspace = 0.02
|
||||||
|
|
||||||
|
# Images
|
||||||
|
self.image_aspect = "equal"
|
||||||
|
self.image_interpolation = "auto"
|
||||||
|
self.image_interpolation_stage = "auto"
|
||||||
|
self.image_cmap = "viridis"
|
||||||
|
self.image_lut = 256
|
||||||
|
self.image_origin = "upper"
|
||||||
|
self.image_resample = True
|
||||||
|
self.image_composite_image = True
|
||||||
|
|
||||||
|
# Contour, error bar, histogram and scatter
|
||||||
|
self.contour_negative_linestyle = "dashed"
|
||||||
|
self.contour_corner_mask = True
|
||||||
|
self.contour_linewidth = self.linewidth
|
||||||
|
self.contour_algorithm = "mpl2014"
|
||||||
|
self.errorbar_capsize = self.markersize
|
||||||
|
self.hist_bins = 10
|
||||||
|
self.scatter_marker = "o"
|
||||||
|
self.scatter_edgecolors = "face"
|
||||||
|
|
||||||
|
# Savefig
|
||||||
self.savefig_dpi = 300
|
self.savefig_dpi = 300
|
||||||
|
self.savefig_facecolor = "auto"
|
||||||
|
self.savefig_edgecolor = "auto"
|
||||||
|
self.savefig_format = "pdf"
|
||||||
|
self.savefig_bbox = "standard"
|
||||||
|
self.savefig_pad_inches = 0
|
||||||
self.savefig_transparent = True
|
self.savefig_transparent = True
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Compute
|
# Compute
|
||||||
self._compute()
|
self._compute()
|
||||||
return None
|
return None
|
||||||
@@ -352,12 +503,6 @@ class ManchotRC:
|
|||||||
|
|
||||||
self.context["axes.prop_cycle"] = self.axes_prop_cycle
|
self.context["axes.prop_cycle"] = self.axes_prop_cycle
|
||||||
|
|
||||||
# Figure
|
|
||||||
self.context["figure.figsize"] = (figsize_x, figsize_y)
|
|
||||||
self.context["figure.dpi"] = self.figure_dpi
|
|
||||||
|
|
||||||
self.context["savefig.dpi"] = self.savefig_dpi
|
|
||||||
self.context["savefig.transparent"] = self.savefig_transparent
|
|
||||||
|
|
||||||
# Axes
|
# Axes
|
||||||
self.context["axes.formatter.limits"] = self.axes_formatter_limits
|
self.context["axes.formatter.limits"] = self.axes_formatter_limits
|
||||||
@@ -387,20 +532,163 @@ class ManchotRC:
|
|||||||
self.context["axes3d.mouserotationstyle"] = self.axes3d_mouserotationstyle
|
self.context["axes3d.mouserotationstyle"] = self.axes3d_mouserotationstyle
|
||||||
self.context["axes3d.trackballsize"] = self.axes3d_trackballsize
|
self.context["axes3d.trackballsize"] = self.axes3d_trackballsize
|
||||||
self.context["axes3d.trackballborder"] = self.axes3d_trackballborder
|
self.context["axes3d.trackballborder"] = self.axes3d_trackballborder
|
||||||
|
|
||||||
|
# Axis
|
||||||
|
self.context["xaxis.labellocation"] = self.xaxis_labellocation
|
||||||
|
self.context["yaxis.labellocation"] = self.yaxis_labellocation
|
||||||
|
|
||||||
|
# Dates
|
||||||
|
self.context["date.autoformatter.year"] = self.date_autoformatter_year
|
||||||
|
self.context["date.autoformatter.month"] = self.date_autoformatter_month
|
||||||
|
self.context["date.autoformatter.day"] = self.date_autoformatter_day
|
||||||
|
self.context["date.autoformatter.hour"] = self.date_autoformatter_hour
|
||||||
|
self.context["date.autoformatter.minute"] = self.date_autoformatter_minute
|
||||||
|
self.context["date.autoformatter.second"] = self.date_autoformatter_second
|
||||||
|
self.context["date.autoformatter.microsecond"] = self.date_autoformatter_microsecond
|
||||||
|
self.context["date.converter"] = self.date_converter
|
||||||
|
self.context["date.interval_multiples"] = self.date_interval_multiples
|
||||||
|
|
||||||
|
# Ticks
|
||||||
|
self.context["xtick.top"] = self.xtick_top
|
||||||
|
self.context["xtick.bottom"] = self.xtick_bottom
|
||||||
|
self.context["xtick.labeltop"] = self.xtick_labeltop
|
||||||
|
self.context["xtick.labelbottom"] = self.xtick_labelbottom
|
||||||
|
self.context["xtick.major.size"] = self.xtick_major_size
|
||||||
|
self.context["xtick.minor.size"] = self.xtick_minor_size
|
||||||
|
self.context["xtick.major.width"] = self.xtick_major_width
|
||||||
|
self.context["xtick.minor.width"] = self.xtick_minor_width
|
||||||
|
self.context["xtick.major.pad"] = self.xtick_major_pad
|
||||||
|
self.context["xtick.minor.pad"] = self.xtick_minor_pad
|
||||||
|
self.context["xtick.color"] = self.xtick_color
|
||||||
|
self.context["xtick.labelcolor"] = self.xtick_labelcolor
|
||||||
|
self.context["xtick.labelsize"] = self.xtick_labelsize
|
||||||
|
self.context["xtick.direction"] = self.xtick_direction
|
||||||
|
self.context["xtick.minor.visible"] = self.xtick_minor_visible
|
||||||
|
self.context["xtick.major.top"] = self.xtick_major_top
|
||||||
|
self.context["xtick.major.bottom"] = self.xtick_major_bottom
|
||||||
|
self.context["xtick.minor.top"] = self.xtick_minor_top
|
||||||
|
self.context["xtick.minor.bottom"] = self.xtick_minor_bottom
|
||||||
|
self.context["xtick.minor.ndivs"] = self.xtick_minor_ndivs
|
||||||
|
self.context["xtick.alignment"] = self.xtick_alignment
|
||||||
|
|
||||||
|
self.context["ytick.left"] = self.ytick_left
|
||||||
|
self.context["ytick.right"] = self.ytick_right
|
||||||
|
self.context["ytick.labelleft"] = self.ytick_labelleft
|
||||||
|
self.context["ytick.labelright"] = self.ytick_labelright
|
||||||
|
self.context["ytick.major.size"] = self.ytick_major_size
|
||||||
|
self.context["ytick.minor.size"] = self.ytick_minor_size
|
||||||
|
self.context["ytick.major.width"] = self.ytick_major_width
|
||||||
|
self.context["ytick.minor.width"] = self.ytick_minor_width
|
||||||
|
self.context["ytick.major.pad"] = self.ytick_major_pad
|
||||||
|
self.context["ytick.minor.pad"] = self.ytick_minor_pad
|
||||||
|
self.context["ytick.color"] = self.ytick_color
|
||||||
|
self.context["ytick.labelcolor"] = self.ytick_labelcolor
|
||||||
|
self.context["ytick.labelsize"] = self.ytick_labelsize
|
||||||
|
self.context["ytick.direction"] = self.ytick_direction
|
||||||
|
self.context["ytick.minor.visible"] = self.ytick_minor_visible
|
||||||
|
self.context["ytick.major.left"] = self.ytick_major_left
|
||||||
|
self.context["ytick.major.right"] = self.ytick_major_right
|
||||||
|
self.context["ytick.minor.left"] = self.ytick_minor_left
|
||||||
|
self.context["ytick.minor.right"] = self.ytick_minor_right
|
||||||
|
self.context["ytick.minor.ndivs"] = self.ytick_minor_ndivs
|
||||||
|
self.context["ytick.alignment"] = self.ytick_alignment
|
||||||
|
|
||||||
|
# Grid
|
||||||
|
self.context["grid.color"] = self.grid_color
|
||||||
|
self.context["grid.linestyle"] = self.grid_linestyle
|
||||||
|
self.context["grid.linewidth"] = self.grid_linewidth
|
||||||
|
self.context["grid.alpha"] = self.grid_alpha
|
||||||
|
|
||||||
|
# Legend
|
||||||
|
self.context["legend.loc"] = self.legend_loc
|
||||||
|
self.context["legend.frameon"] = self.legend_frameon
|
||||||
|
self.context["legend.framealpha"] = self.legend_framealpha
|
||||||
|
self.context["legend.facecolor"] = self.legend_facecolor
|
||||||
|
self.context["legend.edgecolor"] = self.legend_edgecolor
|
||||||
|
self.context["legend.fancybox"] = self.legend_fancybox
|
||||||
|
self.context["legend.shadow"] = self.legend_shadow
|
||||||
|
self.context["legend.numpoints"] = self.legend_numpoints
|
||||||
|
self.context["legend.scatterpoints"] = self.legend_scatterpoints
|
||||||
|
self.context["legend.markerscale"] = self.legend_markerscale
|
||||||
|
self.context["legend.fontsize"] = self.legend_fontsize
|
||||||
|
self.context["legend.labelcolor"] = self.legend_labelcolor
|
||||||
|
self.context["legend.title_fontsize"] = self.legend_title_fontsize
|
||||||
|
self.context["legend.borderpad"] = self.legend_borderpad
|
||||||
|
self.context["legend.labelspacing"] = self.legend_labelspacing
|
||||||
|
self.context["legend.handlelength"] = self.legend_handlelength
|
||||||
|
self.context["legend.handleheight"] = self.legend_handleheight
|
||||||
|
self.context["legend.handletextpad"] = self.legend_handletextpad
|
||||||
|
self.context["legend.borderaxespad"] = self.legend_borderaxespad
|
||||||
|
self.context["legend.columnspacing"] = self.legend_columnspacing
|
||||||
|
|
||||||
|
# Figure
|
||||||
|
self.context["figure.titlesize"] = self.figure_titlesize
|
||||||
|
self.context["figure.titleweight"] = self.figure_titleweight
|
||||||
|
self.context["figure.labelsize"] = self.figure_labelsize
|
||||||
|
self.context["figure.labelweight"] = self.figure_labelweight
|
||||||
|
self.context["figure.figsize"] = self.figure_figsize
|
||||||
|
self.context["figure.dpi"] = self.figure_dpi
|
||||||
|
self.context["figure.facecolor"] = self.figure_facecolor
|
||||||
|
self.context["figure.edgecolor"] = self.figure_edgecolor
|
||||||
|
self.context["figure.frameon"] = self.figure_frameon
|
||||||
|
self.context["figure.subplot.left"] = self.figure_subplot_left
|
||||||
|
self.context["figure.subplot.right"] = self.figure_subplot_right
|
||||||
|
self.context["figure.subplot.bottom"] = self.figure_subplot_bottom
|
||||||
|
self.context["figure.subplot.top"] = self.figure_subplot_top
|
||||||
|
self.context["figure.subplot.wspace"] = self.figure_subplot_wspace
|
||||||
|
self.context["figure.subplot.hspace"] = self.figure_subplot_hspace
|
||||||
|
self.context["figure.autolayout"] = self.figure_autolayout
|
||||||
|
self.context["figure.constrained_layout.use"] = self.figure_constrained_layout_use
|
||||||
|
self.context["figure.constrained_layout.h_pad"] = self.figure_constrained_layout_h_pad
|
||||||
|
self.context["figure.constrained_layout.w_pad"] = self.figure_constrained_layout_w_pad
|
||||||
|
self.context["figure.constrained_layout.hspace"] = self.figure_constrained_layout_hspace
|
||||||
|
self.context["figure.constrained_layout.wspace"] = self.figure_constrained_layout_wspace
|
||||||
|
|
||||||
|
# Images
|
||||||
|
self.context["image.aspect"] = self.image_aspect
|
||||||
|
self.context["image.interpolation"] = self.image_interpolation
|
||||||
|
self.context["image.interpolation_stage"] = self.image_interpolation_stage
|
||||||
|
self.context["image.cmap"] = self.image_cmap
|
||||||
|
self.context["image.lut"] = self.image_lut
|
||||||
|
self.context["image.origin"] = self.image_origin
|
||||||
|
self.context["image.resample"] = self.image_resample
|
||||||
|
self.context["image.composite_image"] = self.image_composite_image
|
||||||
|
|
||||||
|
# Contour, error bar, histogram and scatter
|
||||||
|
self.context["contour.negative_linestyle"] = self.contour_negative_linestyle
|
||||||
|
self.context["contour.corner_mask"] = self.contour_corner_mask
|
||||||
|
self.context["contour.linewidth"] = self.contour_linewidth
|
||||||
|
self.context["contour.algorithm"] = self.contour_algorithm
|
||||||
|
self.context["errorbar.capsize"] = self.errorbar_capsize
|
||||||
|
self.context["hist.bins"] = self.hist_bins
|
||||||
|
self.context["scatter.marker"] = self.scatter_marker
|
||||||
|
self.context["scatter.edgecolors"] = self.scatter_edgecolors
|
||||||
|
|
||||||
|
# Savefig
|
||||||
|
self.context["savefig.dpi"] = self.savefig_dpi
|
||||||
|
self.context["savefig.facecolor"] = self.savefig_facecolor
|
||||||
|
self.context["savefig.edgecolor"] = self.savefig_edgecolor
|
||||||
|
self.context["savefig.format"] = self.savefig_format
|
||||||
|
self.context["savefig.bbox"] = self.savefig_bbox
|
||||||
|
self.context["savefig.pad_inches"] = self.savefig_pad_inches
|
||||||
|
self.context["savefig.transparent"] = self.savefig_transparent
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
from mpl_toolkits.mplot3d import axes3d
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
rc = ManchotRC()
|
rc = ManchotRC()
|
||||||
|
|
||||||
with plt.style.context(rc.context):
|
with plt.style.context(rc.context):
|
||||||
fig, axs = plt.subplots(1, 3)
|
fig, axs = plt.subplots(1, 3)
|
||||||
axs[0].plot([0,1,2,3,4], [2,1,4,3,6])
|
fig.suptitle("Default plot")
|
||||||
axs[0].plot([0,1,2,3,4], [4,3,1,2,4], "--")
|
axs[0].plot([0,1,2,3,4], [2,1,4,3,6], label="curve 1")
|
||||||
|
axs[0].plot([0,1,2,3,4], [4,3,1,2,4], "o--", label="curve 2")
|
||||||
|
|
||||||
axs[0].set_title("Lorem")
|
axs[0].set_title("Lorem")
|
||||||
axs[0].set_xlabel("$x~\\mathrm{[cm]}$")
|
axs[0].set_xlabel("$x~\\mathrm{[cm]}$")
|
||||||
axs[0].set_ylabel("$y~\\mathrm{[cm]}$")
|
axs[0].set_ylabel("$y~\\mathrm{[cm]}$")
|
||||||
|
axs[0].legend()
|
||||||
|
|
||||||
axs[1].scatter([0,1,2,3,4], [2,1,4,3,6])
|
axs[1].scatter([0,1,2,3,4], [2,1,4,3,6])
|
||||||
axs[1].scatter([0,1,2,3,4], [4,3,1,2,4], s=[1,2,3,4,6])
|
axs[1].scatter([0,1,2,3,4], [4,3,1,2,4], s=[1,2,3,4,6])
|
||||||
@@ -418,5 +706,23 @@ if __name__ == "__main__":
|
|||||||
[2,6,5,6,6,4,5,6,7,5,4,5,2]])
|
[2,6,5,6,6,4,5,6,7,5,4,5,2]])
|
||||||
axs[2].set_xlabel("Value")
|
axs[2].set_xlabel("Value")
|
||||||
axs[2].set_ylabel("Number")
|
axs[2].set_ylabel("Number")
|
||||||
fig.tight_layout() # NOTE: Temporary
|
|
||||||
|
fig = plt.figure()
|
||||||
|
ax = fig.add_subplot(projection="3d")
|
||||||
|
|
||||||
|
X, Y, Z = axes3d.get_test_data(0.05)
|
||||||
|
|
||||||
|
# Plot the 3D surface
|
||||||
|
ax.plot_surface(X, Y, Z, edgecolor='C0', lw=0.5, rstride=8, cstride=8,
|
||||||
|
alpha=0.3)
|
||||||
|
|
||||||
|
# Plot projections of the contours for each dimension. By choosing offsets
|
||||||
|
# that match the appropriate axes limits, the projected contours will sit on
|
||||||
|
# the 'walls' of the graph.
|
||||||
|
ax.contour(X, Y, Z, zdir='z', offset=-100)
|
||||||
|
ax.contour(X, Y, Z, zdir='x', offset=-40)
|
||||||
|
ax.contour(X, Y, Z, zdir='y', offset=40)
|
||||||
|
|
||||||
|
ax.set(xlim=(-40, 40), ylim=(-40, 40), zlim=(-100, 100),
|
||||||
|
xlabel='X', ylabel='Y', zlabel='Z')
|
||||||
plt.show()
|
plt.show()
|
||||||
|
|||||||
730
ç
Normal file
730
ç
Normal file
@@ -0,0 +1,730 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
#[TLP:CLEAR] UNLIMITED DISTRIBUTION
|
||||||
|
"""
|
||||||
|
manchot_plot.py
|
||||||
|
|
||||||
|
@ Author: Moussouni, Yaël (PhD student; yael.moussouni@astro.unistra.fr)
|
||||||
|
@ Institution: Université de Strasbourg, CNRS, Observatoire astronomique
|
||||||
|
de Strasbourg, UMR 7550, F-67000 Strasbourg, France
|
||||||
|
@ Date: 2025-11-21
|
||||||
|
|
||||||
|
Licence:
|
||||||
|
Python Matplotlib Style
|
||||||
|
Copyright (C) 2026 Yaël Moussouni (yael.moussouni@astro.unistra.fr)
|
||||||
|
|
||||||
|
manchot_plot.py
|
||||||
|
Copyright (C) 2026 Yaël Moussouni (yael.moussouni@astro.unistra.fr)
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see www.gnu.org/licenses/.
|
||||||
|
"""
|
||||||
|
import os
|
||||||
|
|
||||||
|
import matplotlib as mpl
|
||||||
|
import numpy as np
|
||||||
|
import colours as c
|
||||||
|
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
|
from cycler import cycler
|
||||||
|
|
||||||
|
cm = 0.3937 # in/cm
|
||||||
|
|
||||||
|
class ManchotRC:
|
||||||
|
def __init__(self):
|
||||||
|
self.context = {}
|
||||||
|
|
||||||
|
# Paper
|
||||||
|
self.paper = (21*cm, 29.7*cm)
|
||||||
|
self.margin_left = 3*cm
|
||||||
|
self.margin_right = 3*cm
|
||||||
|
self.margin_cols = 0*cm
|
||||||
|
self.n_cols = 1
|
||||||
|
self.aspect = 3/2
|
||||||
|
|
||||||
|
self.page_linewidth = (self.paper[0] - self.margin_left - self.margin_right)
|
||||||
|
self.page_textwidth = self.page_linewidth/self.n_cols - self.margin_cols*(self.n_cols - 1)
|
||||||
|
# Global parameters
|
||||||
|
self.linewidth = 2
|
||||||
|
self.markersize = 3
|
||||||
|
self.pad = 3.5
|
||||||
|
self.joinstyle = "round"
|
||||||
|
|
||||||
|
|
||||||
|
self.fig_x = self.page_textwidth
|
||||||
|
self.fig_y = self.fig_x / self.aspect
|
||||||
|
|
||||||
|
# Colours
|
||||||
|
self.colour_fg = "#000000"
|
||||||
|
self.colour_bg = "#FFFFFF"
|
||||||
|
self.colours = [c.signal_blue,
|
||||||
|
c.signal_orange,
|
||||||
|
c.signal_green,
|
||||||
|
c.signal_red,
|
||||||
|
c.signal_violet,
|
||||||
|
c.signal_brown,
|
||||||
|
c.signal_pink,
|
||||||
|
c.signal_grey]
|
||||||
|
|
||||||
|
self.colour_fg_rgb = np.array(mpl.colors.to_rgb(self.colour_fg))
|
||||||
|
self.colour_bg_rgb = np.array(mpl.colors.to_rgb(self.colour_bg))
|
||||||
|
|
||||||
|
self.colour_mg_rgb = np.mean([self.colour_fg_rgb, self.colour_bg_rgb],
|
||||||
|
axis=0)
|
||||||
|
self.colour_mg = mpl.colors.to_hex(self.colour_mg_rgb)
|
||||||
|
|
||||||
|
self.colour_mbg_rgb = np.mean([self.colour_mg_rgb, self.colour_bg_rgb],
|
||||||
|
axis=0)
|
||||||
|
self.colour_mbg = mpl.colors.to_hex(self.colour_mbg_rgb)
|
||||||
|
|
||||||
|
self.colour_mfg_rgb = np.mean([self.colour_mg_rgb, self.colour_fg_rgb],
|
||||||
|
axis=0)
|
||||||
|
self.colour_mfg = mpl.colors.to_hex(self.colour_mfg_rgb)
|
||||||
|
|
||||||
|
# Lines
|
||||||
|
self.lines_linewidth = self.linewidth
|
||||||
|
self.lines_markersize = self.markersize
|
||||||
|
self.lines_linestyle = "-"
|
||||||
|
self.lines_marker = ""
|
||||||
|
self.lines_markeredgewidth = self.linewidth/2
|
||||||
|
self.lines_dash_joinstyle = self.joinstyle
|
||||||
|
self.lines_dash_capstyle = self.joinstyle
|
||||||
|
self.lines_solid_joinstyle = self.joinstyle
|
||||||
|
self.lines_solid_capstyle = self.joinstyle
|
||||||
|
self.lines_color = self.colours[0]
|
||||||
|
self.lines_markerfacecolor = "auto"
|
||||||
|
self.lines_markeredgecolor = self.lines_markerfacecolor
|
||||||
|
|
||||||
|
# Patches
|
||||||
|
self.patch_linewidth = self.linewidth
|
||||||
|
self.patch_force_edgecolor = False
|
||||||
|
self.patch_facecolor = self.colours[0]
|
||||||
|
self.patch_edgecolor = self.colour_fg
|
||||||
|
|
||||||
|
# Hatches
|
||||||
|
self.hatch_linewidth = self.linewidth/2
|
||||||
|
self.hatch_color = self.colour_fg
|
||||||
|
|
||||||
|
# Boxplots
|
||||||
|
self.boxplot_notch = False
|
||||||
|
self.boxplot_vertical = True
|
||||||
|
self.boxplot_whiskers = 1.5
|
||||||
|
self.boxplot_bootstrap = None
|
||||||
|
self.boxplot_patchartist = False
|
||||||
|
self.boxplot_showmeans = True
|
||||||
|
self.boxplot_showcaps = True
|
||||||
|
self.boxplot_showbox = True
|
||||||
|
self.boxplot_showfliers = True
|
||||||
|
self.boxplot_meanline = True
|
||||||
|
|
||||||
|
self.boxplot_flierprops_marker = "x"
|
||||||
|
self.boxplot_flierprops_markeredgewidth = self.linewidth/2
|
||||||
|
self.boxplot_flierprops_markersize = self.markersize
|
||||||
|
self.boxplot_flierprops_linestyle = ""
|
||||||
|
self.boxplot_flierprops_linewidth = self.linewidth
|
||||||
|
|
||||||
|
self.boxplot_boxprops_linewidth = self.linewidth
|
||||||
|
self.boxplot_boxprops_linestyle = "-"
|
||||||
|
|
||||||
|
self.boxplot_whiskerprops_linewidth = self.boxplot_boxprops_linewidth
|
||||||
|
self.boxplot_whiskerprops_linestyle = self.boxplot_boxprops_linestyle
|
||||||
|
|
||||||
|
self.boxplot_capprops_linewidth = self.boxplot_boxprops_linewidth
|
||||||
|
self.boxplot_capprops_linestyle = self.boxplot_boxprops_linestyle
|
||||||
|
|
||||||
|
self.boxplot_medianprops_linewidth = self.boxplot_boxprops_linewidth
|
||||||
|
self.boxplot_medianprops_linestyle = self.boxplot_boxprops_linestyle
|
||||||
|
|
||||||
|
self.boxplot_meanprops_marker = "+"
|
||||||
|
self.boxplot_meanprops_markersize = self.markersize
|
||||||
|
self.boxplot_meanprops_linestyle = self.boxplot_boxprops_linestyle
|
||||||
|
self.boxplot_meanprops_linewidth = self.boxplot_boxprops_linewidth
|
||||||
|
|
||||||
|
self.boxplot_flierprops_color = self.colour_mg
|
||||||
|
self.boxplot_flierprops_markerfacecolor = self.colour_fg
|
||||||
|
self.boxplot_flierprops_markeredgecolor = self.colour_fg
|
||||||
|
self.boxplot_boxprops_color = self.colour_fg
|
||||||
|
self.boxplot_whiskerprops_color = self.boxplot_boxprops_color
|
||||||
|
self.boxplot_capprops_color = self.boxplot_boxprops_color
|
||||||
|
self.boxplot_medianprops_color = self.colours[1]
|
||||||
|
self.boxplot_meanprops_color = self.colours[2]
|
||||||
|
self.boxplot_meanprops_markerfacecolor = self.boxplot_meanprops_color
|
||||||
|
self.boxplot_meanprops_markeredgecolor = self.boxplot_meanprops_color
|
||||||
|
|
||||||
|
# Font
|
||||||
|
font_list = mpl.font_manager.get_font_names()
|
||||||
|
if "Latin Modern Roman" in font_list :
|
||||||
|
self.font_family = "Latin Modern Roman"
|
||||||
|
elif "Computer Modern Roman" in font_list:
|
||||||
|
self.font_family = "Computer Modern Roman"
|
||||||
|
elif "Times" in font_list:
|
||||||
|
self.font_family = "Computer Modern Roman"
|
||||||
|
else:
|
||||||
|
self.font_family = "serif"
|
||||||
|
self.font_style = "normal"
|
||||||
|
self.font_variant = "normal"
|
||||||
|
self.font_weight = "normal"
|
||||||
|
self.font_stretch = "normal"
|
||||||
|
self.font_size = 10
|
||||||
|
|
||||||
|
self.font_serif = ["Computer Modern Roman",
|
||||||
|
"Latin Modern Roman",
|
||||||
|
"Times",
|
||||||
|
"serif"]
|
||||||
|
self.font_sans_serif = ["Computer Modern Sans Serif",
|
||||||
|
"Latin Modern Sans",
|
||||||
|
"Helvetica",
|
||||||
|
"Arial",
|
||||||
|
"sans-serif"]
|
||||||
|
self.font_monospace = ["Computer Modern Typewriter",
|
||||||
|
"Latin Modern Mono",
|
||||||
|
"Courier",
|
||||||
|
"monospace"]
|
||||||
|
|
||||||
|
# Text / LaTeX
|
||||||
|
self.text_usetex = False
|
||||||
|
self.latex_preamble = ""
|
||||||
|
self.mathtext_fontset = "cm"
|
||||||
|
self.text_color = self.colour_fg
|
||||||
|
|
||||||
|
# Axes
|
||||||
|
self.axes_linewidth = self.linewidth/2
|
||||||
|
self.axes_grid = True
|
||||||
|
self.axes_grid_axis = "both"
|
||||||
|
self.axes_grid_which = "major"
|
||||||
|
self.axes_titlelocation = "center"
|
||||||
|
self.axes_titley = None
|
||||||
|
self.axes_titlesize = "medium"
|
||||||
|
self.axes_titleweight = "normal"
|
||||||
|
self.axes_titlepad = self.pad
|
||||||
|
self.axes_labelsize = "medium"
|
||||||
|
self.axes_labelweight = "normal"
|
||||||
|
self.axes_labelpad = self.pad
|
||||||
|
self.axes_axisbelow = True
|
||||||
|
self.axes_facecolor = self.colour_bg
|
||||||
|
self.axes_edgecolor = self.colour_fg
|
||||||
|
self.axes_titlecolor = self.axes_edgecolor
|
||||||
|
self.axes_labelcolor = self.axes_edgecolor
|
||||||
|
self.axes_prop_cycle = cycler(color=self.colours)
|
||||||
|
|
||||||
|
self.axes_formatter_limits = (-5, 6)
|
||||||
|
self.axes_formatter_use_locale = False
|
||||||
|
self.axes_formatter_use_mathtext = False
|
||||||
|
self.axes_formatter_min_exponent = 0
|
||||||
|
self.axes_formatter_useoffset = True
|
||||||
|
self.axes_formatter_offset_threshold = 4
|
||||||
|
self.axes_spines_left = True
|
||||||
|
self.axes_spines_bottom = True
|
||||||
|
self.axes_spines_top = True
|
||||||
|
self.axes_spines_right = True
|
||||||
|
self.axes_unicode_minus = True
|
||||||
|
|
||||||
|
self.axes_xmargin = 0.05
|
||||||
|
self.axes_ymargin = 0.05
|
||||||
|
self.axes_zmargin = 0.05
|
||||||
|
self.axes_autolimit_mode = "data"
|
||||||
|
|
||||||
|
self.polaraxes_grid = True
|
||||||
|
|
||||||
|
self.axes3d_grid = True
|
||||||
|
self.axes3d_automargin = False
|
||||||
|
self.axes3d_xaxis_panecolor = np.concatenate([self.colour_mg_rgb, [0.05]])
|
||||||
|
self.axes3d_yaxis_panecolor = np.concatenate([self.colour_mg_rgb, [0.10]])
|
||||||
|
self.axes3d_zaxis_panecolor = np.concatenate([self.colour_mg_rgb, [0.15]])
|
||||||
|
self.axes3d_mouserotationstyle = "trackball"
|
||||||
|
self.axes3d_trackballsize = 0.667
|
||||||
|
self.axes3d_trackballborder = 0.2
|
||||||
|
|
||||||
|
# Axis
|
||||||
|
self.xaxis_labellocation = "center"
|
||||||
|
self.yaxis_labellocation = "center"
|
||||||
|
|
||||||
|
# Dates
|
||||||
|
self.date_autoformatter_year = "%Y"
|
||||||
|
self.date_autoformatter_month = "%Y-%m"
|
||||||
|
self.date_autoformatter_day = "%Y-%m-%d"
|
||||||
|
self.date_autoformatter_hour = "%m-%d%H"
|
||||||
|
self.date_autoformatter_minute = "%d%H:%M"
|
||||||
|
self.date_autoformatter_second = "%H:%M:%S"
|
||||||
|
self.date_autoformatter_microsecond = "%M:%S.%f"
|
||||||
|
self.date_converter = "auto"
|
||||||
|
self.date_interval_multiples = True
|
||||||
|
|
||||||
|
# Ticks
|
||||||
|
self.xtick_top = True
|
||||||
|
self.xtick_bottom = True
|
||||||
|
self.xtick_labeltop = False
|
||||||
|
self.xtick_labelbottom = True
|
||||||
|
self.xtick_major_size = self.linewidth*2
|
||||||
|
self.xtick_minor_size = self.xtick_major_size/2
|
||||||
|
self.xtick_major_width = self.linewidth/2
|
||||||
|
self.xtick_minor_width = self.xtick_major_width
|
||||||
|
self.xtick_major_pad = self.pad
|
||||||
|
self.xtick_minor_pad = self.pad
|
||||||
|
self.xtick_color = self.colour_fg
|
||||||
|
self.xtick_labelcolor = self.xtick_color
|
||||||
|
self.xtick_labelsize = "medium"
|
||||||
|
self.xtick_direction = "in"
|
||||||
|
self.xtick_minor_visible = False
|
||||||
|
self.xtick_major_top = True
|
||||||
|
self.xtick_major_bottom = True
|
||||||
|
self.xtick_minor_top = True
|
||||||
|
self.xtick_minor_bottom = True
|
||||||
|
self.xtick_minor_ndivs = "auto"
|
||||||
|
self.xtick_alignment = "center"
|
||||||
|
|
||||||
|
self.ytick_left = self.xtick_bottom
|
||||||
|
self.ytick_right = self.xtick_top
|
||||||
|
self.ytick_labelleft = self.xtick_labelbottom
|
||||||
|
self.ytick_labelright = self.xtick_labeltop
|
||||||
|
self.ytick_major_size = self.xtick_major_size
|
||||||
|
self.ytick_minor_size = self.xtick_minor_size
|
||||||
|
self.ytick_major_width = self.xtick_major_width
|
||||||
|
self.ytick_minor_width = self.xtick_minor_width
|
||||||
|
self.ytick_major_pad = self.xtick_major_pad
|
||||||
|
self.ytick_minor_pad = self.xtick_minor_pad
|
||||||
|
self.ytick_color = self.xtick_color
|
||||||
|
self.ytick_labelcolor = self.xtick_labelcolor
|
||||||
|
self.ytick_labelsize = self.xtick_labelsize
|
||||||
|
self.ytick_direction = self.xtick_direction
|
||||||
|
self.ytick_minor_visible = self.xtick_minor_visible
|
||||||
|
self.ytick_major_left = self.xtick_major_bottom
|
||||||
|
self.ytick_major_right = self.xtick_major_top
|
||||||
|
self.ytick_minor_left = self.xtick_minor_bottom
|
||||||
|
self.ytick_minor_right = self.xtick_minor_top
|
||||||
|
self.ytick_minor_ndivs = self.xtick_minor_ndivs
|
||||||
|
self.ytick_alignment = "center_baseline"
|
||||||
|
|
||||||
|
# Grids
|
||||||
|
self.grid_color = self.colour_mbg
|
||||||
|
self.grid_linestyle = ":"
|
||||||
|
self.grid_linewidth = self.linewidth/2
|
||||||
|
self.grid_alpha = 1
|
||||||
|
|
||||||
|
# Legend
|
||||||
|
self.legend_loc = "best"
|
||||||
|
self.legend_frameon = True
|
||||||
|
self.legend_framealpha = 0.8
|
||||||
|
self.legend_facecolor = self.colour_bg
|
||||||
|
self.legend_edgecolor = self.colour_mbg
|
||||||
|
self.legend_fancybox = True
|
||||||
|
self.legend_shadow = False
|
||||||
|
self.legend_numpoints = 1
|
||||||
|
self.legend_scatterpoints = 1
|
||||||
|
self.legend_markerscale = 1.0
|
||||||
|
self.legend_fontsize = "medium"
|
||||||
|
self.legend_labelcolor = self.colour_fg
|
||||||
|
self.legend_title_fontsize = None
|
||||||
|
|
||||||
|
self.legend_borderpad = 0.4
|
||||||
|
self.legend_labelspacing = 0.5
|
||||||
|
self.legend_handlelength = 2.0
|
||||||
|
self.legend_handleheight = 0.7
|
||||||
|
self.legend_handletextpad = 0.8
|
||||||
|
self.legend_borderaxespad = 0.5
|
||||||
|
self.legend_columnspacing = 2.0
|
||||||
|
|
||||||
|
# Figure
|
||||||
|
self.figure_titlesize = "medium"
|
||||||
|
self.figure_titleweight = "normal"
|
||||||
|
self.figure_labelsize = "medium"
|
||||||
|
self.figure_labelweight = "normal"
|
||||||
|
|
||||||
|
self.figure_figsize = self.fig_x, self.fig_y
|
||||||
|
self.figure_dpi = 150
|
||||||
|
self.figure_facecolor = self.colour_bg
|
||||||
|
self.figure_edgecolor = self.colour_bg
|
||||||
|
self.figure_frameon = True
|
||||||
|
self.figure_subplot_left = 0.125
|
||||||
|
self.figure_subplot_right = 0.9
|
||||||
|
self.figure_subplot_bottom = 0.11
|
||||||
|
self.figure_subplot_top = 0.88
|
||||||
|
self.figure_subplot_wspace = 0.2
|
||||||
|
self.figure_subplot_hspace = 0.2
|
||||||
|
self.figure_autolayout = False
|
||||||
|
self.figure_constrained_layout_use = True
|
||||||
|
self.figure_constrained_layout_h_pad = 0.04
|
||||||
|
self.figure_constrained_layout_w_pad = 0.04
|
||||||
|
self.figure_constrained_layout_hspace = 0.02
|
||||||
|
self.figure_constrained_layout_wspace = 0.02
|
||||||
|
|
||||||
|
# Images
|
||||||
|
self.image_aspect = "equal"
|
||||||
|
self.image_interpolation = "auto"
|
||||||
|
self.image_interpolation_stage = "auto"
|
||||||
|
self.image_cmap = "viridis"
|
||||||
|
self.image_lut = 256
|
||||||
|
self.image_origin = "upper"
|
||||||
|
self.image_resample = True
|
||||||
|
self.image_composite_image = True
|
||||||
|
|
||||||
|
# Contour, error bar, histogram and scatter
|
||||||
|
self.contour_negative_linestyle = "dashed"
|
||||||
|
self.contour_corner_mask = True
|
||||||
|
self.contour_linewidth = self.linewidth
|
||||||
|
self.contour_algorithm = "mpl2014"
|
||||||
|
self.errorbar_capsize = self.markersize
|
||||||
|
self.hist_bins = 10
|
||||||
|
self.scatter_marker = "o"
|
||||||
|
self.scatter_edgecolors = "face"
|
||||||
|
|
||||||
|
# Savefig
|
||||||
|
self.savefig_dpi = 300
|
||||||
|
self.savefig_facecolor = "auto"
|
||||||
|
self.savefig_edgecolor = "auto"
|
||||||
|
self.savefig_format = "pdf"
|
||||||
|
self.savefig_bbox = "standard"
|
||||||
|
self.savefig_pad_inches = 0
|
||||||
|
self.savefig_transparent = True
|
||||||
|
|
||||||
|
# Compute
|
||||||
|
self._compute()
|
||||||
|
return None
|
||||||
|
|
||||||
|
def _compute(self):
|
||||||
|
self.context = {}
|
||||||
|
|
||||||
|
# Paper
|
||||||
|
margin = self.margin_left + self.margin_right \
|
||||||
|
+ (self.n_cols - 1) * self.margin_cols
|
||||||
|
figsize_x = self.paper[0]/self.n_cols - margin
|
||||||
|
figsize_y = figsize_x / self.aspect
|
||||||
|
|
||||||
|
|
||||||
|
# Lines
|
||||||
|
self.context["lines.linewidth"] = self.lines_linewidth
|
||||||
|
self.context["lines.linestyle"] = self.lines_linestyle
|
||||||
|
self.context["lines.color"] = self.lines_color
|
||||||
|
self.context["lines.marker"] = self.lines_marker
|
||||||
|
self.context["lines.markerfacecolor"] = self.lines_markerfacecolor
|
||||||
|
self.context["lines.markeredgecolor"] = self.lines_markeredgecolor
|
||||||
|
self.context["lines.markeredgewidth"] = self.lines_markeredgewidth
|
||||||
|
self.context["lines.markersize"] = self.lines_markersize
|
||||||
|
self.context["lines.dash_joinstyle"] = self.lines_dash_joinstyle
|
||||||
|
self.context["lines.dash_capstyle"] = self.lines_dash_capstyle
|
||||||
|
self.context["lines.solid_joinstyle"] = self.lines_solid_joinstyle
|
||||||
|
self.context["lines.solid_capstyle"] = self.lines_solid_capstyle
|
||||||
|
|
||||||
|
# Patches
|
||||||
|
self.context["patch.linewidth"] = self.patch_linewidth
|
||||||
|
self.context["patch.facecolor"] = self.patch_facecolor
|
||||||
|
self.context["patch.edgecolor"] = self.patch_edgecolor
|
||||||
|
self.context["patch.force_edgecolor"] = self.patch_force_edgecolor
|
||||||
|
|
||||||
|
# Boxplot
|
||||||
|
self.context["boxplot.notch"] = self.boxplot_notch
|
||||||
|
self.context["boxplot.vertical"] = self.boxplot_vertical
|
||||||
|
self.context["boxplot.whiskers"] = self.boxplot_whiskers
|
||||||
|
self.context["boxplot.bootstrap"] = self.boxplot_bootstrap
|
||||||
|
self.context["boxplot.patchartist"] = self.boxplot_patchartist
|
||||||
|
self.context["boxplot.showmeans"] = self.boxplot_showmeans
|
||||||
|
self.context["boxplot.showcaps"] = self.boxplot_showcaps
|
||||||
|
self.context["boxplot.showbox"] = self.boxplot_showbox
|
||||||
|
self.context["boxplot.showfliers"] = self.boxplot_showfliers
|
||||||
|
self.context["boxplot.meanline"] = self.boxplot_meanline
|
||||||
|
|
||||||
|
self.context["boxplot.flierprops.color"] = self.boxplot_flierprops_color
|
||||||
|
self.context["boxplot.flierprops.marker"] = self.boxplot_flierprops_marker
|
||||||
|
self.context["boxplot.flierprops.markerfacecolor"] = self.boxplot_flierprops_markerfacecolor
|
||||||
|
self.context["boxplot.flierprops.markeredgecolor"] = self.boxplot_flierprops_markeredgecolor
|
||||||
|
self.context["boxplot.flierprops.markeredgewidth"] = self.boxplot_flierprops_markeredgewidth
|
||||||
|
self.context["boxplot.flierprops.markersize"] = self.boxplot_flierprops_markersize
|
||||||
|
self.context["boxplot.flierprops.linestyle"] = self.boxplot_flierprops_linestyle
|
||||||
|
self.context["boxplot.flierprops.linewidth"] = self.boxplot_flierprops_linewidth
|
||||||
|
|
||||||
|
self.context["boxplot.boxprops.color"] = self.boxplot_boxprops_color
|
||||||
|
self.context["boxplot.boxprops.linewidth"] = self.boxplot_boxprops_linewidth
|
||||||
|
self.context["boxplot.boxprops.linestyle"] = self.boxplot_boxprops_linestyle
|
||||||
|
|
||||||
|
self.context["boxplot.whiskerprops.color"] = self.boxplot_whiskerprops_color
|
||||||
|
self.context["boxplot.whiskerprops.linewidth"] = self.boxplot_whiskerprops_linewidth
|
||||||
|
self.context["boxplot.whiskerprops.linestyle"] = self.boxplot_whiskerprops_linestyle
|
||||||
|
|
||||||
|
|
||||||
|
self.context["boxplot.capprops.color"] = self.boxplot_capprops_color
|
||||||
|
self.context["boxplot.capprops.linewidth"] = self.boxplot_capprops_linewidth
|
||||||
|
self.context["boxplot.capprops.linestyle"] = self.boxplot_capprops_linestyle
|
||||||
|
|
||||||
|
self.context["boxplot.medianprops.color"] = self.boxplot_medianprops_color
|
||||||
|
self.context["boxplot.medianprops.linewidth"] = self.boxplot_medianprops_linewidth
|
||||||
|
self.context["boxplot.medianprops.linestyle"] = self.boxplot_medianprops_linestyle
|
||||||
|
|
||||||
|
self.context["boxplot.meanprops.color"] = self.boxplot_meanprops_color
|
||||||
|
self.context["boxplot.meanprops.marker"] = self.boxplot_meanprops_marker
|
||||||
|
self.context["boxplot.meanprops.markerfacecolor"] = self.boxplot_meanprops_markerfacecolor
|
||||||
|
self.context["boxplot.meanprops.markeredgecolor"] = self.boxplot_meanprops_markeredgecolor
|
||||||
|
self.context["boxplot.meanprops.linestyle"] = self.boxplot_meanprops_linestyle
|
||||||
|
self.context["boxplot.meanprops.linewidth"] = self.boxplot_meanprops_linewidth
|
||||||
|
|
||||||
|
# Font
|
||||||
|
self.context["font.family"] = self.font_family
|
||||||
|
self.context["font.style"] = self.font_style
|
||||||
|
self.context["font.variant"] = self.font_variant
|
||||||
|
self.context["font.weight"] = self.font_weight
|
||||||
|
self.context["font.stretch"] = self.font_stretch
|
||||||
|
self.context["font.size"] = self.font_size
|
||||||
|
self.context["font.serif"] = self.font_serif
|
||||||
|
self.context["font.sans-serif"] = self.font_sans_serif
|
||||||
|
self.context["font.monospace"] = self.font_monospace
|
||||||
|
|
||||||
|
# Text / LaTeX
|
||||||
|
self.context["text.usetex"] = self.text_usetex
|
||||||
|
self.context["text.latex.preamble"] = self.latex_preamble
|
||||||
|
self.context["mathtext.fontset"] = self.mathtext_fontset
|
||||||
|
|
||||||
|
# Axes
|
||||||
|
self.context["axes.facecolor"] = self.axes_facecolor
|
||||||
|
self.context["axes.edgecolor"] = self.axes_edgecolor
|
||||||
|
self.context["axes.linewidth"] = self.axes_linewidth
|
||||||
|
self.context["axes.grid"] = self.axes_grid
|
||||||
|
self.context["axes.grid.axis"] = self.axes_grid_axis
|
||||||
|
self.context["axes.grid.which"] = self.axes_grid_which
|
||||||
|
self.context["axes.titlelocation"] = self.axes_titlelocation
|
||||||
|
self.context["axes.titlesize"] = self.axes_titlesize
|
||||||
|
self.context["axes.titleweight"] = self.axes_titleweight
|
||||||
|
self.context["axes.titlecolor"] = self.axes_titlecolor
|
||||||
|
self.context["axes.titley"] = self.axes_titley
|
||||||
|
self.context["axes.titlepad"] = self.axes_titlepad
|
||||||
|
self.context["axes.labelsize"] = self.axes_labelsize
|
||||||
|
self.context["axes.labelpad"] = self.axes_labelpad
|
||||||
|
self.context["axes.labelweight"] = self.axes_labelweight
|
||||||
|
self.context["axes.labelcolor"] = self.axes_labelcolor
|
||||||
|
self.context["axes.axisbelow"] = self.axes_axisbelow
|
||||||
|
|
||||||
|
self.context["axes.prop_cycle"] = self.axes_prop_cycle
|
||||||
|
|
||||||
|
|
||||||
|
# Axes
|
||||||
|
self.context["axes.formatter.limits"] = self.axes_formatter_limits
|
||||||
|
self.context["axes.formatter.use_locale"] = self.axes_formatter_use_locale
|
||||||
|
self.context["axes.formatter.use_mathtext"] = self.axes_formatter_use_mathtext
|
||||||
|
self.context["axes.formatter.min_exponent"] = self.axes_formatter_min_exponent
|
||||||
|
self.context["axes.formatter.useoffset"] = self.axes_formatter_useoffset
|
||||||
|
self.context["axes.formatter.offset_threshold"] = self.axes_formatter_offset_threshold
|
||||||
|
self.context["axes.spines.left"] = self.axes_spines_left
|
||||||
|
self.context["axes.spines.bottom"] = self.axes_spines_bottom
|
||||||
|
self.context["axes.spines.top"] = self.axes_spines_top
|
||||||
|
self.context["axes.spines.right"] = self.axes_spines_right
|
||||||
|
self.context["axes.unicode_minus"] = self.axes_unicode_minus
|
||||||
|
|
||||||
|
self.context["axes.xmargin"] = self.axes_xmargin
|
||||||
|
self.context["axes.ymargin"] = self.axes_ymargin
|
||||||
|
self.context["axes.zmargin"] = self.axes_zmargin
|
||||||
|
self.context["axes.autolimit_mode"] = self.axes_autolimit_mode
|
||||||
|
|
||||||
|
self.context["polaraxes.grid"] = self.polaraxes_grid
|
||||||
|
|
||||||
|
self.context["axes3d.grid"] = self.axes3d_grid
|
||||||
|
self.context["axes3d.automargin"] = self.axes3d_automargin
|
||||||
|
self.context["axes3d.xaxis.panecolor"] = self.axes3d_xaxis_panecolor
|
||||||
|
self.context["axes3d.yaxis.panecolor"] = self.axes3d_yaxis_panecolor
|
||||||
|
self.context["axes3d.zaxis.panecolor"] = self.axes3d_zaxis_panecolor
|
||||||
|
self.context["axes3d.mouserotationstyle"] = self.axes3d_mouserotationstyle
|
||||||
|
self.context["axes3d.trackballsize"] = self.axes3d_trackballsize
|
||||||
|
self.context["axes3d.trackballborder"] = self.axes3d_trackballborder
|
||||||
|
|
||||||
|
# Axis
|
||||||
|
self.context["xaxis.labellocation"] = self.xaxis_labellocation
|
||||||
|
self.context["yaxis.labellocation"] = self.yaxis_labellocation
|
||||||
|
|
||||||
|
# Dates
|
||||||
|
self.context["date.autoformatter.year"] = self.date_autoformatter_year
|
||||||
|
self.context["date.autoformatter.month"] = self.date_autoformatter_month
|
||||||
|
self.context["date.autoformatter.day"] = self.date_autoformatter_day
|
||||||
|
self.context["date.autoformatter.hour"] = self.date_autoformatter_hour
|
||||||
|
self.context["date.autoformatter.minute"] = self.date_autoformatter_minute
|
||||||
|
self.context["date.autoformatter.second"] = self.date_autoformatter_second
|
||||||
|
self.context["date.autoformatter.microsecond"] = self.date_autoformatter_microsecond
|
||||||
|
self.context["date.converter"] = self.date_converter
|
||||||
|
self.context["date.interval_multiples"] = self.date_interval_multiples
|
||||||
|
|
||||||
|
# Ticks
|
||||||
|
self.context["xtick.top"] = self.xtick_top
|
||||||
|
self.context["xtick.bottom"] = self.xtick_bottom
|
||||||
|
self.context["xtick.labeltop"] = self.xtick_labeltop
|
||||||
|
self.context["xtick.labelbottom"] = self.xtick_labelbottom
|
||||||
|
self.context["xtick.major.size"] = self.xtick_major_size
|
||||||
|
self.context["xtick.minor.size"] = self.xtick_minor_size
|
||||||
|
self.context["xtick.major.width"] = self.xtick_major_width
|
||||||
|
self.context["xtick.minor.width"] = self.xtick_minor_width
|
||||||
|
self.context["xtick.major.pad"] = self.xtick_major_pad
|
||||||
|
self.context["xtick.minor.pad"] = self.xtick_minor_pad
|
||||||
|
self.context["xtick.color"] = self.xtick_color
|
||||||
|
self.context["xtick.labelcolor"] = self.xtick_labelcolor
|
||||||
|
self.context["xtick.labelsize"] = self.xtick_labelsize
|
||||||
|
self.context["xtick.direction"] = self.xtick_direction
|
||||||
|
self.context["xtick.minor.visible"] = self.xtick_minor_visible
|
||||||
|
self.context["xtick.major.top"] = self.xtick_major_top
|
||||||
|
self.context["xtick.major.bottom"] = self.xtick_major_bottom
|
||||||
|
self.context["xtick.minor.top"] = self.xtick_minor_top
|
||||||
|
self.context["xtick.minor.bottom"] = self.xtick_minor_bottom
|
||||||
|
self.context["xtick.minor.ndivs"] = self.xtick_minor_ndivs
|
||||||
|
self.context["xtick.alignment"] = self.xtick_alignment
|
||||||
|
|
||||||
|
self.context["ytick.left"] = self.ytick_left
|
||||||
|
self.context["ytick.right"] = self.ytick_right
|
||||||
|
self.context["ytick.labelleft"] = self.ytick_labelleft
|
||||||
|
self.context["ytick.labelright"] = self.ytick_labelright
|
||||||
|
self.context["ytick.major.size"] = self.ytick_major_size
|
||||||
|
self.context["ytick.minor.size"] = self.ytick_minor_size
|
||||||
|
self.context["ytick.major.width"] = self.ytick_major_width
|
||||||
|
self.context["ytick.minor.width"] = self.ytick_minor_width
|
||||||
|
self.context["ytick.major.pad"] = self.ytick_major_pad
|
||||||
|
self.context["ytick.minor.pad"] = self.ytick_minor_pad
|
||||||
|
self.context["ytick.color"] = self.ytick_color
|
||||||
|
self.context["ytick.labelcolor"] = self.ytick_labelcolor
|
||||||
|
self.context["ytick.labelsize"] = self.ytick_labelsize
|
||||||
|
self.context["ytick.direction"] = self.ytick_direction
|
||||||
|
self.context["ytick.minor.visible"] = self.ytick_minor_visible
|
||||||
|
self.context["ytick.major.left"] = self.ytick_major_left
|
||||||
|
self.context["ytick.major.right"] = self.ytick_major_right
|
||||||
|
self.context["ytick.minor.left"] = self.ytick_minor_left
|
||||||
|
self.context["ytick.minor.right"] = self.ytick_minor_right
|
||||||
|
self.context["ytick.minor.ndivs"] = self.ytick_minor_ndivs
|
||||||
|
self.context["ytick.alignment"] = self.ytick_alignment
|
||||||
|
|
||||||
|
# Grid
|
||||||
|
self.context["grid.color"] = self.grid_color
|
||||||
|
self.context["grid.linestyle"] = self.grid_linestyle
|
||||||
|
self.context["grid.linewidth"] = self.grid_linewidth
|
||||||
|
self.context["grid.alpha"] = self.grid_alpha
|
||||||
|
|
||||||
|
# Legend
|
||||||
|
self.context["legend.loc"] = self.legend_loc
|
||||||
|
self.context["legend.frameon"] = self.legend_frameon
|
||||||
|
self.context["legend.framealpha"] = self.legend_framealpha
|
||||||
|
self.context["legend.facecolor"] = self.legend_facecolor
|
||||||
|
self.context["legend.edgecolor"] = self.legend_edgecolor
|
||||||
|
self.context["legend.fancybox"] = self.legend_fancybox
|
||||||
|
self.context["legend.shadow"] = self.legend_shadow
|
||||||
|
self.context["legend.numpoints"] = self.legend_numpoints
|
||||||
|
self.context["legend.scatterpoints"] = self.legend_scatterpoints
|
||||||
|
self.context["legend.markerscale"] = self.legend_markerscale
|
||||||
|
self.context["legend.fontsize"] = self.legend_fontsize
|
||||||
|
self.context["legend.labelcolor"] = self.legend_labelcolor
|
||||||
|
self.context["legend.title_fontsize"] = self.legend_title_fontsize
|
||||||
|
self.context["legend.borderpad"] = self.legend_borderpad
|
||||||
|
self.context["legend.labelspacing"] = self.legend_labelspacing
|
||||||
|
self.context["legend.handlelength"] = self.legend_handlelength
|
||||||
|
self.context["legend.handleheight"] = self.legend_handleheight
|
||||||
|
self.context["legend.handletextpad"] = self.legend_handletextpad
|
||||||
|
self.context["legend.borderaxespad"] = self.legend_borderaxespad
|
||||||
|
self.context["legend.columnspacing"] = self.legend_columnspacing
|
||||||
|
|
||||||
|
# Figure
|
||||||
|
self.context["figure.titlesize"] = self.figure_titlesize
|
||||||
|
self.context["figure.titleweight"] = self.figure_titleweight
|
||||||
|
self.context["figure.labelsize"] = self.figure_labelsize
|
||||||
|
self.context["figure.labelweight"] = self.figure_labelweight
|
||||||
|
self.context["figure.figsize"] = self.figure_figsize
|
||||||
|
self.context["figure.dpi"] = self.figure_dpi
|
||||||
|
self.context["figure.facecolor"] = self.figure_facecolor
|
||||||
|
self.context["figure.edgecolor"] = self.figure_edgecolor
|
||||||
|
self.context["figure.frameon"] = self.figure_frameon
|
||||||
|
self.context["figure.subplot.left"] = self.figure_subplot_left
|
||||||
|
self.context["figure.subplot.right"] = self.figure_subplot_right
|
||||||
|
self.context["figure.subplot.bottom"] = self.figure_subplot_bottom
|
||||||
|
self.context["figure.subplot.top"] = self.figure_subplot_top
|
||||||
|
self.context["figure.subplot.wspace"] = self.figure_subplot_wspace
|
||||||
|
self.context["figure.subplot.hspace"] = self.figure_subplot_hspace
|
||||||
|
self.context["figure.autolayout"] = self.figure_autolayout
|
||||||
|
self.context["figure.constrained_layout.use"] = self.figure_constrained_layout_use
|
||||||
|
self.context["figure.constrained_layout.h_pad"] = self.figure_constrained_layout_h_pad
|
||||||
|
self.context["figure.constrained_layout.w_pad"] = self.figure_constrained_layout_w_pad
|
||||||
|
self.context["figure.constrained_layout.hspace"] = self.figure_constrained_layout_hspace
|
||||||
|
self.context["figure.constrained_layout.wspace"] = self.figure_constrained_layout_wspace
|
||||||
|
|
||||||
|
# Images
|
||||||
|
self.context["image.aspect"] = self.image_aspect
|
||||||
|
self.context["image.interpolation"] = self.image_interpolation
|
||||||
|
self.context["image.interpolation_stage"] = self.image_interpolation_stage
|
||||||
|
self.context["image.cmap"] = self.image_cmap
|
||||||
|
self.context["image.lut"] = self.image_lut
|
||||||
|
self.context["image.origin"] = self.image_origin
|
||||||
|
self.context["image.resample"] = self.image_resample
|
||||||
|
self.context["image.composite_image"] = self.image_composite_image
|
||||||
|
|
||||||
|
# Contour, error bar, histogram and scatter
|
||||||
|
self.context["contour.negative_linestyle"] = self.contour_negative_linestyle
|
||||||
|
self.context["contour.corner_mask"] = self.contour_corner_mask
|
||||||
|
self.context["contour.linewidth"] = self.contour_linewidth
|
||||||
|
self.context["contour.algorithm"] = self.contour_algorithm
|
||||||
|
self.context["errorbar.capsize"] = self.errorbar_capsize
|
||||||
|
self.context["hist.bins"] = self.hist_bins
|
||||||
|
self.context["scatter.marker"] = self.scatter_marker
|
||||||
|
self.context["scatter.edgecolors"] = self.scatter_edgecolors
|
||||||
|
|
||||||
|
# Savefig
|
||||||
|
self.context["savefig.dpi"] = self.savefig_dpi
|
||||||
|
self.context["savefig.facecolor"] = self.savefig_facecolor
|
||||||
|
self.context["savefig.edgecolor"] = self.savefig_edgecolor
|
||||||
|
self.context["savefig.format"] = self.savefig_format
|
||||||
|
self.context["savefig.bbox"] = self.savefig_bbox
|
||||||
|
self.context["savefig.pad_inches"] = self.savefig_pad_inches
|
||||||
|
self.context["savefig.transparent"] = self.savefig_transparent
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
from mpl_toolkits.mplot3d import axes3d
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
rc = ManchotRC()
|
||||||
|
|
||||||
|
with plt.style.context(rc.context):
|
||||||
|
fig, axs = plt.subplots(1, 3)
|
||||||
|
fig.suptitle("Default plot")
|
||||||
|
axs[0].plot([0,1,2,3,4], [2,1,4,3,6], label="curve 1")
|
||||||
|
axs[0].plot([0,1,2,3,4], [4,3,1,2,4], "o--", label="curve 2")
|
||||||
|
|
||||||
|
axs[0].set_title("Lorem")
|
||||||
|
axs[0].set_xlabel("$x~\\mathrm{[cm]}$")
|
||||||
|
axs[0].set_ylabel("$y~\\mathrm{[cm]}$")
|
||||||
|
axs[0].legend()
|
||||||
|
|
||||||
|
axs[1].scatter([0,1,2,3,4], [2,1,4,3,6])
|
||||||
|
axs[1].scatter([0,1,2,3,4], [4,3,1,2,4], s=[1,2,3,4,6])
|
||||||
|
|
||||||
|
axs[1].set_title("Ipsum")
|
||||||
|
axs[1].set_xlabel("$x~\\mathrm{[cm]}$")
|
||||||
|
axs[1].set_ylabel("$y~\\mathrm{[cm]}$")
|
||||||
|
axs[1].text(2, 2, "sample text")
|
||||||
|
|
||||||
|
axs[2].set_title("Dolor")
|
||||||
|
axs[2].bar([1,2], [3,2])
|
||||||
|
axs[2].bar([3,4], [3,4], hatch="/")
|
||||||
|
axs[2].boxplot([[2,4,6,4,6,4,6,5,6,6,7,7,8,7,5],
|
||||||
|
[1,4,6,5,6,7,5,3,5,6,7],
|
||||||
|
[2,6,5,6,6,4,5,6,7,5,4,5,2]])
|
||||||
|
axs[2].set_xlabel("Value")
|
||||||
|
axs[2].set_ylabel("Number")
|
||||||
|
|
||||||
|
fig = plt.figure()
|
||||||
|
ax = fig.add_subplot(projection="3d")
|
||||||
|
|
||||||
|
X, Y, Z = axes3d.get_test_data(0.05)
|
||||||
|
|
||||||
|
# Plot the 3D surface
|
||||||
|
ax.plot_surface(X, Y, Z, edgecolor='C0', lw=0.5, rstride=8, cstride=8,
|
||||||
|
alpha=0.3)
|
||||||
|
|
||||||
|
# Plot projections of the contours for each dimension. By choosing offsets
|
||||||
|
# that match the appropriate axes limits, the projected contours will sit on
|
||||||
|
# the 'walls' of the graph.
|
||||||
|
ax.contour(X, Y, Z, zdir='z', offset=-100)
|
||||||
|
ax.contour(X, Y, Z, zdir='x', offset=-40)
|
||||||
|
ax.contour(X, Y, Z, zdir='y', offset=40)
|
||||||
|
|
||||||
|
ax.set(xlim=(-40, 40), ylim=(-40, 40), zlim=(-100, 100),
|
||||||
|
xlabel='X', ylabel='Y', zlabel='Z')
|
||||||
|
plt.show()
|
||||||
Reference in New Issue
Block a user