下面的代码将使用带有id =“element”的svg标记编写svg文件,这很好:
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
x = np.random.standard_normal(10000)
y = 2.0 + 3.0 * x + 4.0 * np.random.standard_normal(10000)
plt.hexbin(x,y, cmap=plt.cm.YlOrRd_r,gid="element")
plt.savefig("img.svg")
但是如果我将 rasterized = True 标志添加到 hexbin(),则在光栅化过程之后gid会丢失,并且img.svg< image标签包含一些随机标签ID(例如< image id =“image9f9a4ebdcc”......)。
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
x = np.random.standard_normal(10000)
y = 2.0 + 3.0 * x + 4.0 * np.random.standard_normal(10000)
plt.hexbin(x,y, cmap=plt.cm.YlOrRd_r,gid="element",rasterized=True)
plt.savefig("img.svg")
有可能以某种方式将hexbin gid保留在输出图像标签中吗? 感谢
更新小黑客可以解决
def saveFile(self,filename):
"""
save svg with updated image tag id's
"""
data = StringIO()
self.fig.savefig(data,format='svg',transparent=True)
data.seek(0)
img = minidom.parse(data)
it=0
for i in img.getElementsByTagName('image'):
i.setAttribute('id','img_'+self.gids[it])
it+=1
fw = open(filename,"w")
img.writexml(fw)
fw.close()
data.close()
img.unlink()