我正在尝试定义一组函数,为发布质量数字设置matplotlib默认绘图样式。我使用rc
命令(或matplotlib.rcParams['key'] = value
)执行此操作。我使用matplotlib.rcParams.keys()
找到了可用选项列表。也许我错过了一些东西,但似乎有些选项缺少scatter
和errorbar
图。
from matplotlib import rc, cycler
# DATA GLOBALS
DATA_LINE_COLOR = 'black'
DATA_LINE_STYLE = '-'
DATA_LINE_WIDTH = 0.5
MODEL_LINE_COLOR = 'red'
MODEL_LINE_STYLE = '-'
MODEL_LINE_WIDTH = 0.7
# AXES GLOBALS
AXES_LINE_WIDTH = 0.5
AXES_MAJOR_TICK_LENGTH = 5
AXES_MINOR_TICK_LENGTH = AXES_MAJOR_TICK_LENGTH/2.
AXES_TICK_DIRECTION = 'in'
# FIGURE GLOBALS
ONE_COL_WIDTH = 3.46
TWO_COL_WIDTH = 7.09
DPI = 800
def general():
"""
General settings for all plot types. Call this first,
then call any cascading style required
"""
rc('font', family='Times New Roman', size=10)
rc('text', color='black')
rc('figure', dpi=DPI)
rc('axes',
xmargin=0.05,
ymargin=0.05,
linewidth=AXES_LINE_WIDTH,
prop_cycle=cycler('color',['black']))
rc('axes.formatter', limits=(-4, 4))
rc('xtick', direction=AXES_TICK_DIRECTION)
rc('xtick.major',
size=AXES_MAJOR_TICK_LENGTH,
width=AXES_LINE_WIDTH)
rc('xtick.minor',
visible=True,
size=AXES_MINOR_TICK_LENGTH,
width=AXES_LINE_WIDTH)
rc('ytick', direction=AXES_TICK_DIRECTION)
rc('ytick.major',
size=AXES_MAJOR_TICK_LENGTH,
width=AXES_LINE_WIDTH)
rc('ytick.minor',
visible=True,
size=AXES_MINOR_TICK_LENGTH,
width=AXES_LINE_WIDTH)
例如,在errorbar
的情况下,只有一个选项需要调整,即errorbar.capsize
。我本来期望其他选项,如errorbar.ecolor
和errorbar.elinewidth
等。是否可以在rc参数中设置这些默认值?也许他们是从别处继承的?
我知道我可以在每次调用ax.errorbar
时明确设置它们,但我想分享一组函数,这些函数可以与同事一起设置默认参数,这样我们就可以生成连贯的数字。
答案 0 :(得分:1)
从文档到plt.errorbar
,您可以看到这些值的继承位置。
ecolor
:mpl颜色,可选,默认:无matplotlib颜色arg,它给出错误条线的颜色; 如果 无,使用连接标记的线的颜色。
elinewidth
:标量,可选,默认值:无错误栏行的线宽。 如果为无,请使用线宽。
capthick
:标量,可选,默认值:无别名kwarg to markeredgewidth(a.k.a. - mew)。对于以磅为单位控制错误条上限厚度的属性,此设置是一个更明智的名称。为了向后兼容,如果给出mew或markeredgewidth,那么它们将覆盖capthick。这可能会在将来的版本中发生变化。
因此,您应该能够使用lines.color
rcParam控制颜色,使用lines.linewidth
rcParam控制错误栏线宽,使用lines.markeredgewidth
rcParam控制颜色厚度。
显然,这些可能会对您图中的其他属性产生负面影响,但我不认为可以使用rcParams
控制它们,而不会更改这些属性。