我正在将matplotlib直方图导出为矢量格式以便在illustrator中处理。这是我的操作方法
plt.savefig('figure.svg',format='svg',transparent=True)
但是,当我尝试在illustrator中复制图表时,我得到can't paste the objects. The requested transformation would make some objects fall completely off the drawing area.
结果发现当我点击对象时,在illustrator中直方图条的长度是无限的。
我附上了复制错误的图:https://cmapreg.s3.us-east-2.amazonaws.com/figure.svg和屏幕截图。
1条答案
按热度按时间1bqhqjot1#
∮问题是
这个问题看起来主要不是由对数比例引起的,而是由于改变了绘图的
ylim
。这会使绘图中原始框的长度保持不变,只会改变图中可见的"窗口"。以pdf格式导出到illustrator会给您原始框,在对数比例的特殊情况下,延伸到负无穷大。即使没有对数比例,盒子也会延伸到白色的数字画布之外。例如:当以pdf格式导入到illustrator时,将产生上述错误:
溶液1
一个可能的解决方案是在
hist
或bar
中使用bottom
参数,正如Jody的评论中提到的。问题是这会使方框向上移动。您可以通过从条形图值中减去bottom
中的值或相应地更改y轴刻度来抵消这一点。这不会产生误差,因为我们裁剪了
ylim
下方的柱:它看起来和原来的情节完全一样,但没有导入问题。
溶液2
在最初的问题中,我们希望使用
hist
函数来绘制方框,我们需要使用第二个选项(不太优雅):因为我们不能直接调整框的高度,所以我们更改y轴标签。(我知道这个问题是老问题了,但我在网上其他地方找不到任何解决方案。)