hexbin savefig失去rasterized之神=真

时间:2014-02-14 12:19:50

标签: python matplotlib

下面的代码将使用带有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()

0 个答案:

没有答案