2016-11-07 2 views
0

В моей преамбуле я имеюpyplot.plot() не учитывает именованные аргументы

import numpy as np 
import numpy as np 
import matplotlib.pyplot as plt 
from cycler import cycler 
plt.style.use([ 
    'seaborn-paper', {'axes.prop_cycle': (
     cycler('color', ['k'])* 
     cycler('lw', [2,1])* 
     cycler('dashes', [[],[13,2],[8,3,1,3]]))}]) 

Когда я позже использовать plt.plot() с использованием именованных аргументов (или их эквиваленты), например,

a = np.array((0.,5.)) 
plt.plot(a,a, linewidth=6) 
plt.plot(-a,a, '-') 

Я ожидаю ОЧЕНЬ широкую 1-ю линию и непрерывную вторую, но это то, что я получаю

the wrong line types!

Что я могу сделать, если я хочу, чтобы

  1. есть разумный (для меня :) по умолчанию цикл для стилей линий и
  2. нарушать правила здесь и там?

TIA

ответ

1

Вопрос о том, что псевдонимы для ширины линии не должным образом де-псевдонимов (так как linewidth и lw используется для установки ширины и противоречива). Аналогичная вещь происходит со строкой стиля vs linestyle vs dashes.

import numpy as np 
import numpy as np 
import matplotlib.pyplot as plt 
from cycler import cycler 
plt.style.use([ 
    'seaborn-paper', {'axes.prop_cycle': (
     cycler('color', ['k'])* 
     cycler('linewidth', [2,1])* 
     cycler('dashes', [[],[13,2],[8,3,1,3]]))}]) 

a = np.array((0.,5.)) 
plt.plot(a,a, linewidth=6) 
plt.plot(-a,a, dashes=[]) 

должно работать.

Первый выпуск (ДВ наложения спектров) фиксируется в 2.х, но даже с использованием дефиса является цикл теперь сломана :(

https://github.com/matplotlib/matplotlib/issues/7426

Смежные вопросы