2011-03-28 2 views
11

Django 프레임 워크에서 사용할 svg 이미지를 생성하기 위해 Matplotlib 및 pyplot을 사용하고 싶습니다. 지금은 페이지로 연결되는 이미지 파일을 생성하지만, 파일 시스템에 쓰지 않고도 유니 코드 문자열로 svg 이미지를 직접 가져올 수있는 방법이 있습니까?Matplotlib svg가 문자열이 아니고 파일이 아닙니다

답변

16

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 
+1

그것은 아마도'cStringIO.StringIO()가'빠른 제공한다는 점을 지적 할 가치가 있지만, 같은 일의 덜 유연 버전뿐만 아니라입니다. http://docs.python.org/library/stringio.html#module-cStringIO OP가 실제로 프로덕션 코드에서이를 사용하려는 경우 차이가 발생할 수 있습니다 (그렇지 않은 경우). 그럼에도 불구하고, 'StringIO'파일과 같은 객체가 확실히 방법입니다. –

관련 문제