Matplotlib svg as string and not a file

后端 未结 2 1016
无人及你
无人及你 2020-12-14 19:39

I\'d like to use Matplotlib and pyplot to generate an svg image to be used in a Django framework. as of now I have it generating image files that are link to by the page, bu

相关标签:
2条回答
  • 2020-12-14 19:52

    Here is python3 version

    import matplotlib.pyplot as plt
    import numpy as np
    import io
    
    f = io.BytesIO()
    a = np.random.rand(10)
    plt.bar(range(len(a)), a)
    plt.savefig(f, format = "svg")
    
    print(f.getvalue()) # svg string
    
    0 讨论(0)
  • 2020-12-14 20:02

    Try using StringIO to avoid writing any file-like object to disk.

    import matplotlib.pyplot as plt
    import StringIO
    from matplotlib import numpy as np
    
    x = np.arange(0,np.pi*3,.1)
    y = np.sin(x)
    
    fig = plt.figure()
    plt.plot(x,y)
    
    imgdata = StringIO.StringIO()
    fig.savefig(imgdata, format='svg')
    imgdata.seek(0)  # rewind the data
    
    svg_dta = imgdata.buf  # this is svg data
    
    file('test.htm', 'w').write(svg_dta)  # test it
    
    0 讨论(0)
提交回复
热议问题