Как преобразовать объект Figure в массив Numpy? - PullRequest
0 голосов
/ 12 января 2020

У меня есть объект Plotly Figure, который я создал, используя Plotly. Я хочу преобразовать этот объект Figure в Numpy Array. Так что я могу затем преобразовать эти данные массива в объект изображения PIL. И они drawImage на Reportlab, используя метод .drawImage.

Здесь b - объект Plotly Figure.

def fig2data ( b ):
    """
    @brief Convert a Plotly figure to a 4D numpy array with RGBA channels and return it
    @param fig a plotly figure
    @return a numpy 3D array of RGBA values
    """
    # draw the renderer
    fig.canvas.draw ( )
    # Get the RGBA buffer from the figure
    w,h = fig.canvas.get_width_height()
    buf = numpy.fromstring ( fig.canvas.tostring_argb(), dtype=numpy.uint8 )
    buf.shape = ( w, h,4 )
    # canvas.tostring_argb give pixmap in ARGB mode. Roll the ALPHA channel to have it in RGBA mode
    buf = numpy.roll ( buf, 3, axis = 2 )
    return buf

buf = fig2data(b)
buf

, что дает мне

AttributeError: 'Figure' object has no attribute 'canvas'

Я использую следующую библиотеку :

import pandas
import numpy
import plotly.graph_objects as go
from PIL import Image
from reportlab.pdfgen import canvas
from reportlab.lib.utils import ImageReader
from reportlab.platypus import Paragraph, SimpleDocTemplate, Spacer, Image, Flowable
from reportlab.lib.units import inch
from reportlab.lib.styles import getSampleStyleSheet

Спасибо.

...