将Plotly图像字节对象转换为numpy数组。

问题描述 投票:0回答:1

plotly.io.to_image 函数用于返回图像的字节对象(文件).

我想把这个代表PNG图像的字节对象转换为numpy数组,以便在Folium中作为图像覆盖使用。

下面是一个例子。

import plotly.graph_objects as go
# Create plot
fig = go.Figure(data =
    go.Contour(
        z=[[10, 10.625, 12.5, 15.625, 20],
           [5.625, 6.25, 8.125, 11.25, 15.625],
           [2.5, 3.125, 5., 8.125, 12.5],
           [0.625, 1.25, 3.125, 6.25, 10.625],
           [0, 0.625, 2.5, 5.625, 10]]
    ))
# Export byte object
img_bytes = fig.to_image(format="png",width=600, height=350)

我试着用PIL:

from PIL import Image
img = Image.frombytes("RGB", (350,600), img_bytes)

获取 ValueError: not enough image data.

我从来没有使用过字节对象,使得这个过程对我来说非常混乱。


PS.有什么其他的方法可以在 folium 地图上使用 plotly 图吗? 如果有任何其他方法可以在folium地图上使用plotly图,我也很感激。

python plotly bytecode folium
1个回答
0
投票

得到了一个可行的答案 Plotly论坛:

这是一个将Plotly fig图像转换为数组的函数。

import io 
from PIL import Image

def plotly_fig2array(fig):
    #convert Plotly fig to  an array
    fig_bytes = fig.to_image(format="png")
    buf = io.BytesIO(fig_bytes)
    img = Image.open(buf)
    return np.asarray(img)

© www.soinside.com 2019 - 2024. All rights reserved.