gpt4 book ai didi

image - 保存为 .ps/.eps 时 Matplotlib 绘图失去透明度

转载 作者:行者123 更新时间:2023-12-03 07:04:24 26 4
gpt4 key购买 nike

如果我尝试使用 .ps/.eps 扩展名保存一些带有透明椭球体的绘图,则在尝试保存它们时会遇到问题。

这是保存为 .png 的图: png

如果我选择将其另存为 .ps/.eps,则如下所示: ps

我解决这个问题的方法是使用 ImageMagick 将原始 png 转换为 ps。唯一的问题是png格式的图片大约90k左右,转换后就变成了不到4M。这不好,因为我有很多这样的图像,并且编译我的 latex 文档会花费太多时间。有没有人能解决这个问题?

最佳答案

问题是 eps 本身不支持透明度。

有几个选项:

  1. 栅格化图像并嵌入到 eps 文件中(如 @Molly 建议)或导出为 pdf 并使用某些外部工具(如 gs)进行转换(通常也依赖于栅格化)

    <
  2. “模仿”透明度,提供一种在给定背景上看起来像透明颜色的颜色。

我讨论了这个for sure once on the matplotlib mailing list ,我得到了光栅化的建议,这是不可行的,因为你得到的是像素化或巨大的数字。当将它们放入出版物等中时,它们的扩展性不太好。

我个人使用第二种方法,虽然不太理想,但我发现它已经足够好了。我写了一个小python script实现 this SO post 中的算法获得具有给定透明度的颜色的纯 RGB 表示

编辑

在绘图的具体情况下,尝试使用 zorder 关键字对绘制的部分进行排序。尝试使用 zorder=10 表示蓝色椭圆,使用 zorder=11 表示绿色椭圆,使用 zorder=12 表示六边形。

这样,蓝色应该位于所有内容下方,然后是绿色椭圆,最后是六边形。并且用纯色绘图也应该可读。如果您喜欢 png 中的蓝色和绿色色调,您可以尝试使用 mimic_alpha.py

编辑2

如果您 100% 确定您必须使用 eps,我想到了几种解决方法(而且它们肯定比您的情节更难看):

  1. 只需在六边形顶部绘制椭圆边框即可。
  2. 获取每个六边形的中心和幅度(可能丢弃所有零箱)并制作 scatter plot使用与 hexbin 中相同的颜色图,并根据需要调整标记大小和形状。您可能想重新绘制其顶部的省略号边框

关于image - 保存为 .ps/.eps 时 Matplotlib 绘图失去透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19638773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com