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

2024-01-26

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

Here's the plot saved as a .png: png

If I choose to save it as a .ps/.eps here is what it looks like: ps

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


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

有几个选项:

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

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

我讨论过这个肯定是在 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,我想到了几种解决方法(这肯定比你的情节更难看):

  1. 只需在六边形顶部绘制椭圆边框即可。
  2. 获取每个六边形的中心和振幅(可能丢弃所有零箱)并制作散点图 http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.scatter使用与中相同的颜色图hexbin并根据需要调整标记的大小和形状。您可能想重新绘制其上的省略号边框
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

保存为 .ps/.eps 时 Matplotlib 绘图失去透明度 的相关文章

随机推荐

  • 是否可以重用backgroundworker对象?

    我有一个 刷新 按钮 每次单击它时我都希望我的后台工作对象能够工作 i use if main news back worker IsBusy true Start the asynchronous operation main news
  • 在 Windows Phone 8 上创建构建

    我想为我的 Windows Phone 8 应用程序构建 如 APK 以进行测试 我该怎么办 当您在 VS 2012 中运行 Windows Phone 8 应用程序时 会在应用程序的 Bin 文件夹中创建一个 XAP 文件 它类似于And
  • 如何使用Vim快速查看Mercurial或Git的变化

    当我在 Vim 中编辑文件时 我想快速突出显示自上次提交以来所做的任何更改 同时仍然能够编辑该文件 有什么可以接近这样做吗 编辑 2020 01 23 快速搜索 仅供参考 发现还有另一个插件似乎与 VCS 无关 https github c
  • 为什么在此 AnyEvent::Handle 示例中没有调用 on_eof?

    这是我的简单服务器 当我运行它并 telnet 到它 端口 5222 并让 telnet 退出其连接时 为什么我的 on eof 函数没有被调用 IE 为什么字符串不是 CATASTROPHE 打印 usr bin perl use v5
  • 如果存在具有相同名称的方法的 Mixin,如何调用超类方法

    重复方法行为 The 代码 这里作为要点 https dartpad dartlang org 10e4a4fe0cc01c7eb5ec926ff9a4cebb将打印e 如果我删除覆盖 即删除output from Baz 它将打印w fr
  • Java PBEWithMD5AndDES

    我正在使用基于密码的加密 我最初的想法是使用 AES 来加密包含密码的文件 结果基于密码的加密不支持 AES 它使用 DES AFAIK des 并不安全 PBEWithMD5AndDES 是否足够安全 足以推送我的数据 还是我应该寻找其他
  • 检查共享目录权限 - C#

    我想编写一段代码来检查共享目录权限 我检查了多个解决方案 但在尝试获取本地目录权限时效果很好 但当我为共享目录制作测试用例时它会失败 我在这个问题中尝试举例 SOF 检查网络中的目录和文件写入权限 https stackoverflow c
  • 寻找最短路径时,广度优先搜索如何工作?

    我做了一些研究 我似乎遗漏了这个算法的一小部分 我了解广度优先搜索的工作原理 但我不明白它到底如何让我到达特定路径 而不是仅仅告诉我每个单独的节点可以去哪里 我想解释我的困惑的最简单方法是提供一个例子 举例来说 假设我有一个这样的图表 我的
  • 在 Heroku 上,rake db:migrate 失败并显示“数据库配置未指定适配器”

    我已经按照导轨教程 http ruby railstutorial org chapters a demo app version 3 2 sec 3adeploying the demo app直到链接点 这是外壳输出 jrhorn424
  • 如何每三个字符插入一个空格,直到一个句点字符?

    我一直在尝试将输入格式设置为每三个字符有一个空格 直到句点字符 例如 999999999 gt 999 999 999 33333 25 gt 33 333 25 222 32 gt 222 32 4444 gt 4444 这是我到目前为止
  • 在 Beaglebone 中使用 openCV 编译 C++ 代码

    我用 C 编写了以下代码 使用 openCV 在 Beaglebone 中运行 include
  • Javascript 模块中的变量在其外部可见吗?

    首先 我来自 NET 世界 那里有静态类 C 在 VB 中也称为模块 和实例类 您可以实例化它们 这个问题是关于 Javascript 的 我试图重新创建我已经知道的模式并创建一个模块 静态类 这是代码 var MyModule varia
  • 重用需要“resolve”参数的“ui-route”控制器

    我希望能够重复使用我的ui router 有线控制器 他们目前从以下位置接收参数ui router resolve渲染他们的模板 我可以重复使用这些控制器吗 ui router 例如 我这样做ui router controller Det
  • Python3中的mimetools.choose_boundary函数在哪里?

    我目前想在Python3中使用以下代码 但发现该函数mimetools choose boundary要弃用 如何更改代码并使其正常工作 import re from urllib request import urlopen Reques
  • Guice JPA - “此连接已关闭。”错误

    在数据库断开空闲连接或数据库关闭并备份后 我在我的网络应用程序中收到以下错误 javax persistence PersistenceException org hibernate exception JDBCConnectionExce
  • async.mapLimit 与 Promise

    我正在尝试使用 async 模块 v3 尤其是 async mapLimit 方法来提交有限数量的并行异步请求 这与以下 简化的 示例代码中的回调配合使用效果很好 async require async async mapLimit 1 2
  • 如何使用用户脚本覆盖警报功能?

    现场有这样的代码 其站点位于 LAN 上 我尝试使用 GM 禁用该警报 我正在尝试这样做 unsafeWindow alert function 但我看到警报并收到此错误 Error uncaught exception Exception
  • Python 3 网页抓取选项

    我是 Python 新手 所以如果这是一个新手问题 我很抱歉 我正在尝试构建一个涉及网络抓取的程序 我注意到 Python 3 的网络抓取模块似乎比 Python 2 x 系列少得多 Beautiful Soup mechanize 和 s
  • 如何在 Android 中为 Fragment 设置标签

    我查看了 Stackoverflow 上的所有问题 但找不到这个问题的唯一明确答案 你怎么将标签设置为Fragment这样你就可以通过以下方式检索它getFragmentManager findFragmentByTag 有人可以给出一个简
  • 保存为 .ps/.eps 时 Matplotlib 绘图失去透明度

    如果我尝试使用 ps eps 扩展名保存一些带有透明椭球体的绘图 我会遇到问题 Here s the plot saved as a png If I choose to save it as a ps eps here is what i