Python Matplotlib:savefig为Y轴按对数缩放的条形图生成不正确的SVG图像

Python Matplotlib:savefig为Y轴按对数缩放的条形图生成不正确的SVG图像,python,numpy,matplotlib,bar-chart,Python,Numpy,Matplotlib,Bar Chart,我在尝试将条形图保存为svg时遇到问题。具体来说,当我使用savefig将条形图保存为PDF时,我得到了正确的结果。但是,当我将其保存为SVG时,条形图不会像应该的那样终止于x轴,而是下降到图形的底部。只有在使用条形图的对数比例时,才会出现此问题。否则,一切都是好的 以下是将绘图保存为SVG和PDF的代码: 以下是两个示例图像: 您可以看到PDF版本没有明显的问题 SVG版本的条形图没有正确剪裁,这是错误的 更新:响应tcaswell 我将Ubuntu 14.04(内核版本为3.16.0)

我在尝试将条形图保存为svg时遇到问题。具体来说,当我使用savefig将条形图保存为PDF时,我得到了正确的结果。但是,当我将其保存为SVG时,条形图不会像应该的那样终止于x轴,而是下降到图形的底部。只有在使用条形图的对数比例时,才会出现此问题。否则,一切都是好的

以下是将绘图保存为SVG和PDF的代码:

以下是两个示例图像:

您可以看到PDF版本没有明显的问题

SVG版本的条形图没有正确剪裁,这是错误的

更新:响应tcaswell

我将Ubuntu 14.04(内核版本为3.16.0)与Python2.7.6、Matplotlib版本1.3.1、numpy版本1.8.2一起使用

我尝试过使用显示和rsvg-view-3查看SVG,两者都显示相同的结果;如果我使用ImageMagick的convert命令行工具将其转换为PDF格式,并使用Evance或acroread等其他查看器打开,则图像仍然存在缺陷(这并不特别令人惊讶)。

这是librsvg中已知的一个缺陷(以及
libQtSvg
中的限制,它只处理非常有限的SVG子集(1.2)这根本不包括剪辑)

svg将在任何现代浏览器中正确呈现


在上有一个更长的讨论,但长的和短的是渲染器有缺陷。

这取决于您使用的查看器吗?问题可能是条形图的剪辑不好,并且根据svg文件中指定剪辑路径的位置,查看器没有正确地进行剪辑(很明显,svg规范说它可以在任何地方声明)。mpl的哪个版本?链接到matplotlib问题跟踪器的相关讨论:这在Windows上的我的浏览器(chrome和firefox)中呈现得非常好
import matplotlib.pyplot as plt
import numpy as np

N = 10
ind = np.arange(N)
series1 = xrange(N)
series2 = [ N - s1_i for s1_i in series1 ]
fig, ax = plt.subplots()
width = 0.2
rects = [ ax.bar(ind, series1, width, color='r', log=True), 
  ax.bar(ind + width, series2, width, color='b', log=True) ]

plt.savefig("test.pdf")
plt.savefig("test.svg")