pyplot与2.2.2的2.1.1不同的行为

时间:2018-07-05 18:47:56

标签: python-3.x matplotlib plot

我已经完成了用于准备图的python脚本。.我使用debian来准备它,其中matplot lib的版本是2.1.1,而现在我要移至Archlinux,使用2.2.2的版本。 ,问题是在2.1.1中,我以这种方式定义了所有参数(例如,循环颜色):

plt.rc_context({ 'axes.prop_cycle': cycler('color', ['#8DA0CB', '#E78AC3', '#A6D854', '#FFD92F', '#E5C494', '#B3B3B3', '#66C2A5', '#FC8D62'] )}) 

在2.2.2中,我找到了此解决方案:

plt.rc('axes', prop_cycle=(cycler('color', ['#8DA0CB', '#E78AC3', '#A6D854', '#FFD92F', '#E5C494', '#B3B3B3', '#66C2A5', '#FC8D62'])))

问题是我已经定义了所有以下参数:

plt.rc_context({'axes.edgecolor': self.parameter['box'] })   # BOX colors
         plt.rc_context({'axes.linewidth':'1.2' })   # BOX width
         plt.rc_context({'axes.xmargin':'0' })     
         plt.rc_context({'axes.ymargin':'0' })     
         plt.rc_context({'axes.labelcolor':self.parameter['axeslabel']})     
         plt.rc_context({'axes.axisbelow':'True' })     
         plt.rc_context({'xtick.color': self.parameter['xtickcolor']})   # doesn't affect the text
         plt.rc_context({'ytick.color': self.parameter['ytickcolor']})   # doesn't affect the text
         #plt.rc_context({ 'axes.prop_cycle': self.colors('tthmod')}) 
         plt.rc_context({ 'axes.prop_cycle': cycler('color', ['#8DA0CB', '#E78AC3', '#A6D854', '#FFD92F', '#E5C494', '#B3B3B3', '#66C2A5', '#FC8D62'] )}) 
         plt.rc_context({ 'grid.linestyle': '--'}) 
         plt.rc_context({ 'grid.alpha': '1'})
         #plt.rc_context({ 'grid.color': '#E5E5E5'})
         plt.rc_context({ 'grid.color': '#FFFFFF'})

在哪里可以找到解决方案?我的意思是一种让我们以“我的方式”工作或如何更改语法以获得相同结果的方法!谢谢

编辑非语言版本(2.1.1版)的las cia che qualcosa sia cambiato !!

1 个答案:

答案 0 :(得分:1)

一次指定许多rc参数的可能方法是使用字典并用其更新matplotlib.rcParams

import matplotlib.pyplot as plt
from cycler import cycler

myparams = {'axes.edgecolor': "red",   # BOX colors
            'axes.linewidth': 1.2,   # BOX width
            'axes.xmargin': 0,    
            'axes.ymargin': 0,     
            'axes.labelcolor': "crimson",     
            'axes.axisbelow': True,   
            'xtick.color': "blue",   # doesn't affect the text
            'ytick.color': "gold",   # doesn't affect the text 
            'axes.prop_cycle': cycler('color', ['#8DA0CB', '#E78AC3', '#A6D854', '#FFD92F', '#E5C494', '#B3B3B3', '#66C2A5', '#FC8D62']), 
            'grid.linestyle': '--', 
            'grid.alpha': '1',
            'grid.color': '#E5E5E5'}
plt.rcParams.update(myparams)

如果您想使用上下文,则可以这样做

with plt.rc_context(myparams):
    plt.plot([1,2,3])

无论如何,在上下文之外使用plt.rc_context可能并没有太大意义。