2011-01-30 27 views
8

Tôi đã thu thập một số dữ liệu trong một tệp văn bản và muốn tạo một ô mẫu. Nhưng tệp dữ liệu này chứa các hàng có độ dài biến đổi, ví dụ.Ô chữ với dữ liệu có độ dài thay đổi trong matplotlib

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

cho chiều dài bằng nhau Tôi chỉ có thể làm
PW = numpy.loadtxt ("./ learning.dat")
matplotlib.boxplot (PW.T);

Làm cách nào để xử lý các dòng dữ liệu chiều dài biến?

+0

Dữ liệu nên được diễn giải như thế nào? Tất cả các giá trị có nên được nối trong một mảng 1D không? –

+0

Không, tôi muốn có ô cho các cột datafile. Vì vậy, những gì tôi muốn làm trong trường hợp chiều dài bằng nhau sẽ là một mảng m lần n, sau đó đóng hộp các transpose, phải không? – Kabbo

+0

Các tài liệu nói "x là một mảng hoặc một chuỗi các vectơ". Vì vậy, bạn cần phải đọc dữ liệu của bạn và dịch nó thành một loạt các vectơ, mỗi một ô. Có vẻ như bạn có thể đọc nó bằng cách sử dụng mô-đun csv của Python. –

Trả lời

16

Chỉ cần sử dụng danh sách các mảng hoặc danh sách. boxplot sẽ lấy bất kỳ loại trình tự nào (Vâng, bất kỳ thứ gì có một __len__, anyway. Nó sẽ không hoạt động với máy phát điện, v.v.).

ví dụ .:

import matplotlib.pyplot as plt 
x = [[1.2, 2.3, 3.0, 4.5], 
    [1.1, 2.2, 2.9]] 
plt.boxplot(x) 
plt.show() 

enter image description here

Nếu bạn đang yêu cầu làm thế nào để đọc dữ liệu của bạn, có rất nhiều cách để làm những gì bạn muốn. Ví dụ đơn giản:

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

Bạn cũng có thể thực hiện một ô trong Lô đất, bằng cách sử dụng API Python hoặc chỉ GUI. Tôi đã thực hiện this graph, mà bạn có thể thực hiện trong trình duyệt hoặc qua các nhân Python API như thế này:

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'] 

tiết lộ đầy đủ: Tôi đang trên đội Plotly.

enter image description here

+0

woah, đẹp! –

Các vấn đề liên quan