如果我尝试使用 .ps/.eps 扩展名保存一些带有透明椭球体的绘图,我会遇到问题。
Here's the plot saved as a .png:
If I choose to save it as a .ps/.eps here is what it looks like:
我解决这个问题的方法是使用 ImageMagick 将原始 png 转换为 ps。唯一的问题是png格式的图片大约90k左右,转换后就变成了不到4M。这不好,因为我有很多这样的图像,并且编译我的乳胶文档会花费太多时间。有人有解决办法吗?
问题是eps
本身不支持透明胶片。
有几个选项:
光栅化图像并嵌入到 eps 文件中(如 @Molly 建议)或导出为 pdf 并使用某些外部工具(如 gs)进行转换(通常也依赖于光栅化)
“模仿”透明度,给出一种看起来像给定背景上的透明颜色的颜色。
我讨论过这个肯定是在 matplotlib 邮件列表上 http://matplotlib.1069221.n5.nabble.com/emulate-transparency-in-eps-td27718.html,我得到了光栅化的建议,这是不可行的,因为你得到的是像素化或巨大的数字。当将它们放入出版物等中时,它们的扩展性不太好。
我个人使用第二种方法,虽然不太理想,但我发现它已经足够好了。我写了一个小蟒蛇脚本 https://github.com/montefra/mimic_alpha实现的算法来自这个帖子 https://stackoverflow.com/questions/2049230/convert-rgba-color-to-rgb?rq=1y%获得具有给定透明度的颜色的纯 RGB 表示
EDIT
在你的情节的具体情况下尝试使用zorder
关键字对绘制的零件进行排序。尝试使用zorder=10
对于蓝色椭圆,zorder=11
为了绿色和zorder=12
对于六边形。
这样,蓝色应该位于所有内容下方,然后是绿色椭圆,最后是六边形。并且该图也应该可以用纯色读取。如果你喜欢 png 中的蓝色和绿色色调,你可以尝试使用mimic_alpha.py
.
EDIT 2
如果您 100% 确定您have要使用 eps,我想到了几种解决方法(这肯定比你的情节更难看):
- 只需在六边形顶部绘制椭圆边框即可。
- 获取每个六边形的中心和振幅(可能丢弃所有零箱)并制作散点图 http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.scatter使用与中相同的颜色图
hexbin
并根据需要调整标记的大小和形状。您可能想重新绘制其上的省略号边框
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)