2015-07-19 5 views
0

У меня есть набор данных 100.000.000 образцов, и я хочу сделать гистограмму с pyplot. Но чтение этого большого файла критически кричит мою память (курсор больше не перемещается, ...), поэтому я ищу способы «помочь» pyplot.hist. Я думал, что разбить файл на несколько небольших файлов может помочь. Но я не знаю, как их потом объединить.Как обновить гистограмму pyplot

ответ

2

Вы можете комбинировать вывод pyplot.hist или использовать @titusjan numpy.histogram, если вы храните свои ящики каждый раз, когда вы его вызываете. Например:

import matplotlib.pyplot as plt 
import numpy as np 

# Generate some fake data 
data=np.random.rand(1000) 

# The fixed bins (change depending on your data) 
bins=np.arange(0,1.1,0.1) 

sub_hist = [], [] 
# Split into 10 sub histograms 
for i in np.arange(0,1000,10): 
    sub_hist_temp, bins_out = np.histogram(data[i:i+10],bins=bins) 
    sub_hist.append(sub_hist_temp) 

# Sum the histograms 
hist_sum = np.array(sub_hist).sum(axis=0) 

# Plot the new summed data, using plt.bar 
fig=plt.figure() 
ax1=fig.add_subplot(211) 
ax1.bar(bins[:-1],hist_sum,width=0.1) # Change width depending on your bins 

# Plot the histogram of all data to check 
ax2=fig.add_subplot(212) 
hist_all, bins_out, patches = all=ax2.hist(data,bins=bins) 

fig.savefig('histsplit.png') 

enter image description here

+0

Я хотел бы использовать 'функцию numpy.histogram' для расчета суб-гистограмм, так что не сделано никаких ненужных зарисовки. Просто добавьте количество циклов каждой итерации в общее количество счетчиков. Кроме того, вы можете использовать класс path.Path для рисования гистограммы, которая значительно быстрее, чем график штрихов, если у вас много бункеров. См. [Этот пример] (http://matplotlib.org/examples/animation/histogram.html). – titusjan

+0

@titusjan fair point – tom

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