解决错误栏默认rcParams matplotlib

时间:2017-02-13 11:21:17

标签: python matplotlib

我正在尝试定义一组函数,为发布质量数字设置matplotlib默认绘图样式。我使用rc命令(或matplotlib.rcParams['key'] = value)执行此操作。我使用matplotlib.rcParams.keys()找到了可用选项列表。也许我错过了一些东西,但似乎有些选项缺少scattererrorbar图。

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.ecolorerrorbar.elinewidth等。是否可以在rc参数中设置这些默认值?也许他们是从别处继承的?

我知道我可以在每次调用ax.errorbar时明确设置它们,但我想分享一组函数,这些函数可以与同事一起设置默认参数,这样我们就可以生成连贯的数字。

1 个答案:

答案 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控制它们,而不会更改这些属性。