Python: перебирать данные и создавать один график для каждой точки данных - PullRequest
0 голосов
/ 24 сентября 2018

Код ниже генерирует линейный график.Здесь ось x является общей, а ось y разбита на две части (y1 и y2), которые нанесены на график против x.Я использую savefig () , чтобы сохранить график в виде файла .PNG.

Сейчас мне нужно, чтобы изображения генерировались в каждой точке данных (или для каждого значения x), чтобы эти изображения были похожи на кадры исходного графика.Я попытался использовать ' Iterrows ' для циклического перемещения по фрейму данных.Однако это не было решено.

PS: я использовал эти сгенерированные кадры для преобразования в видео, используя ffmpeg . Animate () здесь не служит моей цели, поэтому не использует его.Быстрая помощь будет высоко ценится.

Заранее спасибо!

def MakeLineGraph(stats,title, savegraph) :

x = stats[stats.columns[1]]
y1 = stats[stats.columns[2]]
y2 = stats[stats.columns[3]]
xlab = list(stats)[1]
ylab = list(stats)[0]

fig = plt.figure()
pli = plt.subplot()

pli.plot(x, y1, color='g', linewidth=5.0, label='label1')
pli.plot(x, y2, color='y', linewidth=5.0, label='label2')

plt.xlabel(xlab)
plt.ylabel(ylab)
plt.title(title)

# Removing the plot frame lines.
ax = plt.subplot(111)
ax.spines["top"].set_visible(False)
ax.spines["bottom"].set_visible(False)
ax.spines["right"].set_visible(False)
ax.spines["left"].set_visible(False)

ax.get_xaxis().tick_bottom()
ax.get_yaxis().tick_left()

leg = plt.legend()

for line in leg.get_lines():
    line.set_linewidth(6)

if len(x) < 25:
    pli.xticks(x.tolist())

plt.show()

if (savegraph == True):
    fig.set_size_inches((19.2, 10.8))
    fig.savefig(image_folder + 'Progress.png', transparent=True, dpi=600)

1 Ответ

0 голосов
/ 24 сентября 2018

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

def MakeLineGraph(stats,title, savegraph) :

x = stats[stats.columns[1]]
y1 = stats[stats.columns[2]]
y2 = stats[stats.columns[3]]
xlab = list(stats)[1]
ylab = list(stats)[0]

fig, pli = plt.subplots()

pli = plt.subplot()
pli.imshow(pltimg, extent=[0, 95, 0, 55])

line, = pli.plot(x, y1, color='g', linewidth=5.0, label='label1')
for n in range(len(x)):
    line.set_data(x[:n], y1[:n])
    fig.canvas.draw()
    fig.savefig('./frames/Frame%03d.png' % n)

line, = pli.plot(x, y2, color='y', linewidth=5.0, label='label2')
for n in range(len(x)):
    line.set_data(x[:n], y2[:n])
    fig.canvas.draw()
    fig.savefig('./frames/Frame%03d.png' % n)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...