亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 matplotlib 對象上使用 hashlib

在 matplotlib 對象上使用 hashlib

拉莫斯之舞 2023-06-20 13:42:30
使用 Python,我正在嘗試編寫將當前輸出與預期輸出進行比較的測試。輸出是一個 matplotlib 圖,我想在不將該圖保存到文件的情況下執行此操作。我想找到對象的加密散列,這樣我只需要將一個散列與另一個散列進行比較,以確認整個對象與預期的沒有變化。這適用于 numpy 數組,如下所示:import numpy as npimport hashlibnp.random.seed(1)A = np.random.rand(10,100)actual_hash = hashlib.sha1(A).hexdigest()expected_hash = '38f682cab1f0bfefb84cdd6b112b7d10cde6147f'assert actual_hash == expected_hash當我在 matplotlib 對象上嘗試這個時,我得到:TypeError: object supporting the buffer API requiredimport hashlibimport numpy as npimport matplotlib.pyplot as pltX = np.linspace(0,100,1000)Y = np.sin(0.5*X)plt.plot(X,Y)fig = plt.gcf()actual_hash = hashlib.sha1(fig).hexdigest() #this raises the TypeError關于如何使用 hashlib 查找 matplotlib 對象的加密哈希的任何想法?
查看完整描述

1 回答

?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

您可以使用buffer_rgba().?在使用它之前,您必須實際繪制圖形:

必須至少調用一次 draw 才能運行此函數,并更新渲染器以便對圖形進行任何后續更改。

import hashlib

import numpy as np

import matplotlib.pyplot as plt

X = np.linspace(0,100,1000)

Y = np.sin(0.5*X)

plt.plot(X,Y)

canvas = plt.gcf().canvas

canvas.draw()


actual_hash = hashlib.sha1(np.array(canvas.buffer_rgba())).hexdigest()


查看完整回答
反對 回復 2023-06-20
  • 1 回答
  • 0 關注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號