将SVG文件导入Matplotlib图

我喜欢产生高质量的绘图,因此尽可能避免使用光栅化的图形。

我正在尝试将svg文件导入到matplotlib图上:

import matplotlib.pyplot as plt

earth = plt.imread('./gfx/earth.svg')

fig, ax = plt.subplots()

im = ax.imshow(earth)

plt.show()

这与png完美搭配。有人可以告诉我如何使用svg进行操作,或者至少将我指向适当的文档。

PS我知道我可以导出高分辨率png并达到类似的效果。这不是我要寻找的解决方案。

这是我要导入的图像:

Earth_from_above

回答:

也许您正在寻找的是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')

以上是 将SVG文件导入Matplotlib图 的全部内容, 来源链接: utcz.com/qa/423742.html

回到顶部