2015-07-30 3 views
1

Я пытаюсь построить различные точки на логарифмическом графике, представляющем пределы. Я использую errorbar от matplotlib. Однако размер стрелок варьируется от точки к точке. Как я могу создать предельные стрелки постоянного размера?pl.errorbar lolims on log log plot

Мой код выглядит следующим образом:

from math import pi 
import numpy as np 
import pylab as pl 

x_1 = np.arange(0.,10.) 
y_1 = np.arange(11.,20.) 

x_1_avg = np.sum(x_1)/len(x_1) 
y_1_avg = np.sum(y_1)/len(y_1) 

x_2 = np.arange(11.,20.) 
y_2 = np.arange(21.,30.) 

x_2_avg = np.sum(x_2)/len(x_2) 
y_2_avg = np.sum(y_2)/len(y_2) 


pl.yscale('log') 
pl.xscale('log') 
pl.errorbar(x_1_avg, y_1_avg, yerr = 2, color = 'g', lolims=-y_1_avg) 
pl.errorbar(x_2_avg, y_2_avg, yerr = 2, color = 'r', lolims=-y_2_avg) 
pl.savefig('test.eps') 
pl.show() 

ответ

1

Тот факт, что вы используете логарифмической шкалы означает, что длина линии на участке будет меняться в зависимости от того, где она построена. Кроме того, lolims является булевым, поэтому я не думаю, что вы хотите передать ему числовое значение. Во всяком случае, вы можете компенсировать изменение длины, используя значение для yerr, которое пропорционально координате y на панели ошибок.

pl.errorbar(x_1_avg, y_1_avg, yerr = y_1_avg * .5, color = 'g', lolims=True) 
pl.errorbar(x_2_avg, y_2_avg, yerr = y_2_avg * .5, color = 'r', lolims=True) 

Plot of arrows

+0

Можно добавить легенду, которая показывает стрелки правильно? Я пробовал следующее: pl.errorbar (x_1_avg, y_1_avg, xerr = None, yerr = y_1_avg * .175, fmt = None, ecolor = 'g', \ lolims = True, capsize = 3, elinewidth = 1, mew = 0, label = 'One') Но стрелка не появляется. –

+0

pl.legend (loc = 'верхний левый', prop = {'size': 8}, numpoints = 1) –

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