pyplot отличается поведением от 2.1.1 от 2.2.2 - PullRequest
0 голосов
/ 05 июля 2018

Я подготовил скрипт на 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'})

где я могу найти решение ?? Я имею в виду способ, позволяющий работать «по-моему» или как изменить синтаксис, чтобы получить тот же результат! спасибо

РЕДАКТИРОВАТЬ si ma perche` non mi prende quelle versioni che avevo scritto (cosa che faceva la versione 2.1.1) mi lascia pensare che qualcosa sia cambiato !!

1 Ответ

0 голосов
/ 05 июля 2018

Возможный способ указать сразу несколько параметров 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 вне контекста (как в вопросе) в любом случае может не иметь особого смысла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...