Требуются жирные ошибки - PullRequest
1 голос
/ 07 февраля 2010

Вот график , который я сделал, используя matplotlib. Он использует методы bar и scatter из pylab. У меня 3 вопроса:

Как сделать полоски ошибок толще? Нет API в bar для этого, что я вижу. Как правильно указать оси? Как остановить отображение меток по оси X?

Первое наиболее важно, поскольку я понятия не имею. Я думаю, еще одна вещь, как отображать изображение здесь в SO? Я видел, как это было сделано, но не знаю как.

Вот код:

import numpy as np
from pylab import *

data1 = np.linspace(12,22,7)
data2 = np.random.normal(loc=15,scale=5,size=10)
data3 = [11,12,18,19,20,26,27]
data = [data1,np.abs(data2),data3]

# n = number of groups
def layout(n,r=7):
    s = r**2   # r = radius of each data point
    #layout from 1 to 100
    margin = 5
    spacer = 10
    group_width = (100 - 2*margin - (n-1)*spacer)*1.0/n
    dot_width = r
    bar_width = group_width - dot_width
    current = margin
    rL = list()
    for i in range(n):
        rL.append(current)        # x for point
        rL.append(current + 3)    # x for bar
        current += group_width + spacer
    return s, bar_width, rL   

s, w, xlocs = layout(len(data))
for group in data:
    x = xlocs.pop(0)
    for e in group:
        scatter(x,e,s=s,color='k')
    m = np.mean(group)
    e = np.std(group)
    x = xlocs.pop(0)
    o = bar(x,m,width=w,color='0.6',
        yerr=e, ecolor='k')

show()

альтернативный текст http://img210.imageshack.us/img210/8503/screenshot20100206at703.png

Ответы [ 2 ]

4 голосов
/ 07 февраля 2010

Панели ошибок рисуются методом errorbar из метода bar. Он принимает аргумент elinewidth, но не похоже, что вы можете передать его через вызов метода bar. Я бы просто нарисовал их вручную.

o, = bar(x,m,width=w,color='0.6', yerr=None) # note the comma after the o
eBarX = o.get_x()+o.get_width()/2.0
eBarY = o.get_height()
errorbar(eBarX,eBarY,e,capsize=7,elinewidth=6,ecolor='k')

Чтобы отключить XAxis, используйте это перед вызовом show:

axes().xaxis.set_visible(False)

Из-за этих изменений ваш сюжет выглядит так: альтернативный текст http://img690.imageshack.us/img690/5141/testfs.png

0 голосов
/ 18 марта 2015

В качестве альтернативы, чтобы получить толстые столбцы ошибок, вы можете передать elinewidth через метод "bar" следующим образом:

o = bar(x,m,width=w,color='0.6', error_kw={"elinewidth":5}, yerr=e)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...