Boxplot с данными переменной длины в matplotlib - PullRequest
10 голосов
/ 30 января 2011

Я собрал некоторые данные в текстовый файл и хочу создать коробочный график.Но этот файл данных содержит строки переменной длины, например.

1.2, 2.3, 3.0, 4.5
1.1, 2.2, 2.9

для равной длины, я мог бы просто сделать
PW= numpy.loadtxt ("./ learning.dat")
matplotlib.boxplot (PW.T);

Как обрабатывать строки данных переменной длины?

Ответы [ 2 ]

19 голосов
/ 30 января 2011

Просто используйте список массивов или списков.boxplot примет любую последовательность (ну, в любом случае, все, что имеет __len__, в любом случае. Это не будет работать с генераторами и т.*enter image description here

Если вы спрашиваете, как читать ваши данные, есть множество способов сделать то, что вы хотите.В качестве простого примера:

import matplotlib.pyplot as plt
import numpy as np

def arrays_from_file(filename):
    """Builds a list of variable length arrays from a comma-delimited text file"""
    output = []
    with open(filename, 'r') as infile:
        for line in infile:
            line = np.array(line.strip().split(','), dtype=np.float)
            output.append(line)
    return output

plt.boxplot(arrays_from_file('test.txt'))
plt.show()
2 голосов
/ 19 ноября 2013

Вы также можете создать коробочный график в Plot.ly, используя Python API или просто графический интерфейс. Я сделал этот график , который вы можете сделать в браузере или с помощью Python API , например:

box1 = {'y': [1.2, 2.3, 3.0, 4.5],
'type': 'box'}
box2 = {'y': [1.1, 2.2, 2.9],
'type': 'box'}
response = py.plot([box1, box2])
url = response['url']
filename = response['filename']

Полное раскрытие: я в команде Plotly.

enter image description here

...