Importing an svg file into a matplotlib figure

前端 未结 2 1107
野性不改
野性不改 2020-12-13 14:26

I like to produce high quality plots and therefore avoid rasterized graphics as much as possible.

I am trying to import an svg file on to a matplotlib figure:

2条回答
  •  情话喂你
    2020-12-13 15:07

    Maybe what you are looking for is svgutils

    import svgutils.compose as sc
    from IPython.display import SVG # /!\ note the 'SVG' function also in svgutils.compose
    import numpy as np
    
    # drawing a random figure on top of your SVG
    fig, ax = plt.subplots(1, figsize=(4,4))
    ax.plot(np.sin(np.linspace(0,2.*np.pi)), np.cos(np.linspace(0,2.*np.pi)), 'k--', lw=2.)
    ax.plot(np.random.randn(20)*.3, np.random.randn(20)*.3, 'ro', label='random sampling')
    ax.legend()
    ax2 = plt.axes([.2, .2, .2, .2])
    ax2.bar([0,1], [70,30])
    plt.xticks([0.5,1.5], ['water  ', ' ground'])
    plt.yticks([0,50])
    plt.title('ratio (%)')
    fig.savefig('cover.svg', transparent=True)
    # here starts the assembling using svgutils 
    sc.Figure("8cm", "8cm", 
        sc.Panel(sc.SVG("./Worldmap_northern.svg").scale(0.405).move(36,29)),
        sc.Panel(sc.SVG("cover.svg"))
        ).save("compose.svg")
    SVG('compose.svg')
    

    Output:

提交回复
热议问题