【发布时间】:2023-02-07 02:42:35
【问题描述】:
我正在使用 matplotlib 生成我可以训练的矩阵。我需要获取原始图形数据。 保存和读取 .png 工作正常,但我的代码运行时间延长了 10 倍。另一个 stack overflow 问了类似的问题,解决方案是抓取画布,但是相关的逻辑产生了一个 numpy 错误。这是我的mwe。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.transforms import IdentityTransform
px = 1/plt.rcParams['figure.dpi'] # pixel in inches
fig, ax = plt.subplots(figsize=(384*px, 128*px))
i = 756
plt.text(70, 95, "value {:04d}".format(i), color="black", fontsize=30, transform=IdentityTransform())
plt.axis('off')
plt.savefig("xrtv.png") # I dont want to do this ...
rtv = plt.imread("xrtv.png") # or this, but I want access to what imread returns.
gray = lambda rgb: np.dot(rgb[..., :3], [0.299, 0.587, 0.114])
gray = gray(rtv)
【问题讨论】:
-
这个answer提供了一个使用
fig.canvas.tostring_rgb()的解决方案。此外,您可以使用plt.ioff(),因此在调用plt.show()之前不会绘制任何内容,这可以加快您的代码速度。
标签: python matplotlib