Динамическая сгруппированная гистограмма - PullRequest
0 голосов
/ 06 мая 2018

Я пытаюсь создать динамическую гистограмму, которая обновляется на каждой итерации цикла, но диаграмма отображается только после завершения цикла. Может кто-нибудь помочь с этим?

import matplotlib.pyplot as plt
import time
from IPython import display
import numpy as np
import pandas as pd 
from pandas import DataFrame, Series
from numpy.random import randn
%matplotlib inline
fig,ax = plt.subplots(1,1)
people = ('Tom', 'Dick', 'Harry', 'Slim', 'Jim')
ax.set_xlabel("Load", fontsize=12)
ax.set_ylabel("People", fontsize=12)
y_pos = np.arange(len(people))
ax.set_yticks(y_pos)
ax.set_yticklabels(people, rotation=75)
fig.canvas.draw()
width = 0.4
for i in range(0,3):    
    p1 = 3 + 10 * np.random.rand(len(people))
    p2 = 3 + 10 * np.random.rand(len(people))
    df = DataFrame({'p1': p1, 'p2': p2})
    ax.barh(y_pos, df['p1'], width, color='red')
    ax.barh(y_pos + width, df['p2'], width, color='blue')
    fig.canvas.draw()
    time.sleep(0.5)

1 Ответ

0 голосов
/ 06 мая 2018

Я разобрался с ответом. Проблема была с встроенным оператором% matplotlib и его размещением. Для интерактивных диаграмм предлагается использовать блокнот% matplotlib вместо встроенного. И он должен быть размещен до импорта matplotlib.

Следующий код сработал!

%matplotlib notebook

import matplotlib.pyplot as plt
import time
from IPython import display
import numpy as np
import pandas as pd 
from pandas import DataFrame, Series
from numpy.random import randn
fig,ax = plt.subplots(1,1)
people = ('Tom', 'Dick', 'Harry', 'Slim', 'Jim')
ax.set_xlabel("Load", fontsize=12)
ax.set_ylabel("People", fontsize=12)
y_pos = np.arange(len(people))
ax.set_yticks(y_pos)
ax.set_yticklabels(people, rotation=75)
fig.canvas.draw()
width = 0.4
for i in range(0,3):    
    p1 = 3 + 10 * np.random.rand(len(people))
    p2 = 3 + 10 * np.random.rand(len(people))
    df = DataFrame({'p1': p1, 'p2': p2})
    ax.barh(y_pos, df['p1'], width, color='red')
    ax.barh(y_pos + width, df['p2'], width, color='blue')
    fig.canvas.draw()
    time.sleep(0.5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...