当前位置: 首页 > 知识库问答 >
问题:

Matplotlib打印在另存为时将失去透明度。ps/。EPS

储嘉悦
2023-03-14

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

我是如何做到这一点的,就是使用ImageMagick将原始png转换为ps。唯一的问题是png格式的图像约为90k,转换后的图像略低于4M。这是不好的,因为我有很多这样的图像,它将花费太多的时间来编译我的latex文档。有人能解决这个问题吗?

共有3个答案

翁良弼
2023-03-14

可以在保存图形之前将其栅格化,以在eps文件中保持透明度:

ax.set_rasterized(True)
plt.savefig('rasterized_fig.eps')
龙德润
2023-03-14

另一种选择是将它们保存到PDF

savefig('myfigure.pdf')

如果这是你需要使用EPS而不是svg的原因,那它就适用于pdphaex。

阚正真
2023-03-14

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

有几个选择:

>

“模拟”透明度,在给定背景下提供与透明颜色相似的颜色。

我在matplotlib邮件列表中讨论过一次,我得到了光栅化的建议,这是不可行的,因为你要么得到像素化,要么得到巨大的数字。当被放入出版物时,它们的规模并不大。

我个人使用第二种方法,虽然不理想,但我发现它足够好。我写了一个小python脚本,实现了这个SO帖子中的算法,以获得具有给定透明度的颜色的固体RGB表示

编辑

在打印的特定情况下,尝试使用zorder关键字对打印的零件进行排序。蓝色椭圆尝试使用zorder=10,绿色尝试使用zorder=11,六角箱尝试使用zorder=12

这样,蓝色应该在所有东西下面,然后是绿色椭圆,最后是六角形。而且,绘图也应具有纯色可读性。如果你喜欢png中蓝色和绿色的色调,你可以尝试使用mimic_alpha。py

编辑2

如果你100%确定你必须使用eps,我想到了几个变通方法(这肯定比你的情节更难看):

  1. 只要在hexbins上面画椭圆边框。
  2. 获取每个六边形的中心和振幅(可能丢弃所有零箱),并使用与hexbin中相同的颜色贴图绘制散点图,并根据需要调整标记大小和形状。你可能想重新绘制上面的椭圆边框
 类似资料:
  • 我将png文件加载到TPNGImage中,然后将其显示在TImage中。没问题。然后我创建一个TBitmap并将其分配给TPNGImage,并将其显示在TImage中。没问题。 然后我创建第二个TPNGImage并将其分配给TBitmap。在这种情况下,如果我在TImage中显示它,它就失去了透明度。如果我设置了TBitmap。透明到True,在指定给PNGImage之前,PNGImage基本上是

  • 当我启动应用程序时,透明的显示了一个半透明的图像。但是在加载第二级之后,第一级就失去了它的透明度。 奇怪的是,如果第二个fxml文件(“mainscreen.fxml”)不包含任何组件,如按钮或文本字段,那么背景将保持透明。 我正在macOS Sierra上使用eclipse Neon2中的JavaFX和JavaSE-1.8。 我添加了 并将添加到FXML文件的根节点。

  • 关于拼合 包含透明度的文档或作品进行输出时,通常需要进行 “拼合 ”处理。拼合将透明作品分割为基于矢量区域和光栅化的区域。作品比较复杂时(混合有图像、矢量、文字、专色、叠印等),拼合及其结果也会比较复杂。 当您打印或保存或导出为其它不支持透明的格式时,可能需要进行拼合。要在创建 PDF 文件时保留透明度而不进行拼合,请将文件保存为 Adobe PDF 1.4 (Acrobat 5.0) 或更高版本

  • 当以特定格式存储 Illustrator 文件时,原生透明度信息会保留下来。例如,以 Illustrator CS(或更高版本)EPS 格式存储文件时,文件将包含本机 Illustrator 数据和 EPS 数据。当在 Illustrator 中重新打开该文件时,就会读取原生(未拼合的)数据。当把文件放入另一应用程序时,就会读取 EPS(拼合的)数据。 关于拼合 包含透明度的文档或作品进行输出时,

  • 问题内容: 我一直在网上搜索此信息,但没有找到任何体面的帮助。 我有一个BufferedImage,已与ImageIO一起阅读。现在,我想使该图像中的某种颜色变为透明,然后将图像另存为PNG。 我知道出于明显的原因我不能仅仅“绘制”透明颜色,所以我猜我需要某种过滤器。 有人为此提供了一些示例代码吗? 问题答案: 我最近这样做是为了回答我的项目经理的问题。 将灰色转换为透明的功能是: 实际上,它作用

  • 问题内容: 我一直在网上搜索此信息,但没有找到任何体面的帮助。 我有一个BufferedImage,已与ImageIO一起阅读。现在,我想使该图像中的某种颜色变为透明,然后将图像另存为PNG。 我知道出于明显的原因,我不能仅仅“绘制”透明颜色,所以我猜我需要某种过滤器。 有人为此提供了一些示例代码吗? 问题答案: 我最近这样做是为了回答我的项目经理的问题。 将灰色转换为透明的功能是: 实际上,它作