Сравнение тех же сериализованных графиков matplotlib в base64 дает ложь. Как правильно сравнить их, используя только сериализованные данные? - PullRequest
0 голосов
/ 20 марта 2020

Я сериализирую графики matplotlib, и когда я go сравниваю их, они всегда выдают False, даже если графики совпадают. Я хочу иметь возможность проверить, являются ли два графика одинаковыми, используя сериализованные данные. Как мне сделать это правильно?

Вот мой код:

from binascii import b2a_base64
import io
import matplotlib.pyplot as plt

plt.plot(range(10))
buf = io.BytesIO()
plt.savefig(buf, format = 'png')
buf.seek(0)
b0=b2a_base64(buf.getvalue()).decode()

plt.plot(range(10))
buf = io.BytesIO()
plt.savefig(buf, format = 'png')
buf.seek(0)
b1=b2a_base64(buf.getvalue()).decode()

print(b0==b1)

Спасибо за вашу помощь

1 Ответ

2 голосов
/ 20 марта 2020

Вы сравниваете изображение с одной строкой и изображением с двумя строками. Обязательно сравните вещи, которые должны быть равны.

from binascii import b2a_base64
import io
import matplotlib.pyplot as plt

plt.figure()
plt.plot(range(10))
buf = io.BytesIO()
plt.savefig(buf, format = 'png')
buf.seek(0)
b0=b2a_base64(buf.getvalue()).decode()

plt.figure()
plt.plot(range(10))
buf = io.BytesIO()
plt.savefig(buf, format = 'png')
buf.seek(0)
b1=b2a_base64(buf.getvalue()).decode()

print(b0==b1)

будет работать. Одинаково,

from binascii import b2a_base64
import io
import matplotlib.pyplot as plt


plt.plot(range(10))
buf = io.BytesIO()
plt.savefig(buf, format = 'png')
buf.seek(0)
b0=b2a_base64(buf.getvalue()).decode()

plt.close()

plt.plot(range(10))
buf = io.BytesIO()
plt.savefig(buf, format = 'png')
buf.seek(0)
b1=b2a_base64(buf.getvalue()).decode()

print(b0==b1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...