2017-02-13 53 views
0

我試圖定義一組設置matplotlib默認繪製出版品質的圖形樣式的功能。我正在使用rc命令(或matplotlib.rcParams['key'] = value)執行此操作。我使用matplotlib.rcParams.keys()找到了可用選項列表。也許我錯過了一些東西,但似乎有些選項缺失,如scattererrorbar地塊。趨穩誤差欄默認rcParams matplotlib

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

從文檔到plt.errorbar,你能看到這些值是從繼承。

ecolor:MPL顏色,可選的,默認:無

甲matplotlib顏色ARG其給出該顏色的errorbar線; if 無,請使用連接標記線的顏色。

elinewidth:標量,可選,默認:無

的errorbar線的線寬。 如果沒有,請使用線寬。

capthick:標量,可選,默認:無

的別名kwarg到markeredgewidth(又名 - MEW)。此設置對於控制誤差條上限值的屬性更爲合理。爲了向後兼容,如果給出了新的或新的寬度,那麼它們將覆蓋capthick。這在未來的版本中可能會改變。

所以,你應該能夠控制使用lines.color rcParam,使用lines.linewidth rcParam的errorbar線寬的顏色,並使用lines.markeredgewidth rcParam帽的厚度。

顯然,這些可能不利等性能在情節的影響,但我不認爲他們可以使用rcParams也沒有改變這些屬性來控制。

+0

謝謝您的回答。將它們鏈接到該行似乎很奇怪,但是不能提供明確設置不同的默認值的能力。例如,如果我想刪除對誤差條的強調(通過繪製細的淺灰色條和黑色點),那麼設置誤差條的線將放棄曲線中的任何其他線。也許在matplotlib中有這方面的改進空間讓它更加靈活。我可以在問題跟蹤器中提出這個建議。 –