2016-04-16 2 views
1

У меня есть модуль для стандартизированного построения и хотел бы передать ему кортеж с атрибутами линии для каждой строки на графике. В идеале это будет похоже на фрагмент кода ниже ... где я абстрагировал кортеж как простую строку для простоты. Это порождает ошибку, потому что не знает, как разбирать мою строку.Настройка атрибутов линий программно в matplotlib

import matplotlib.pyplot as plt 
x=range(10) 
y=range(10) 
myStyle = "'b-',linewidth=2.0" 
plt.figure(1) 
plt.plot(x,y,myStyle) 

ValueError: Unrecognized character ' in format string 

Может ли это быть реализовано по-другому? Или ... есть альтернативное решение (сродни Matlab), где я назначаю строку дескриптору и получаю его атрибуты строки в цикле?

myStyl = (["color=b","linestyle='-'","linewidth=1.5"], ) 
lh = plt.plot(x,y) 
for ii in range(len(myStyle[0])) 
    plt.setp(lh,myStyle[0][ii])   #<----what goes here 
+0

следующим образом: 'myStyle = 'b -'," 2.0 "', 'plt.plot (x, y, myStyle [0], linewidth = float (myStyle [1]))' – dsgdfg

ответ

1

Вы можете использовать, например, eval:

import matplotlib.pyplot as plt 
x=range(10) 
y=range(10) 
myStyle = "'b-',linewidth=2.0" 
plt.figure(1) 
eval("plt.plot(x,y,"+myStyle+")") 
plt.show() 

Но будьте осторожны с этим. Задайте вопрос, например this, чтобы быть более информированным об этой опции.

+0

@armattia: действительно, это является хорошим решением. Наконец, я нашел документацию по настройке атрибутов линий, но после тестирования выяснилось, что ключевые слова должны быть явными. , [Документация здесь.] (Http://matplotlib.org/examples/pylab_examples/set_and_get.html) –

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