Я хотел бы использовать Matplotlib и pyplot для создания изображения svg, которое будет использоваться в структуре Django. на данный момент у меня есть он, создающий файлы изображений, на которые ссылается страница, но есть ли способ напрямую получить изображение svg как строку unicode без необходимости записи в файловую систему?
Matplotlib svg как строка, а не файл
Ответ 1
Попробуйте использовать StringIO
, чтобы избежать записи каких-либо файловых объектов на диск.
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
Ответ 2
Вот версия Python3
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