Matplotlib 偏移误差条的 bug 解决方法?
这个问题的详细情况可以在这里找到:
还有这里: https://github.com/matplotlib/matplotlib/issues/3400
简单来说,标记总是偏移了1个像素。如果你仔细看看Matplotlib自己的教程页面上的第二个图,你会发现这个问题:http://matplotlib.org/1.2.1/examples/pylab_examples/errorbar_demo.html
这让我很沮丧,因为我无法用matplotlib制作出可以发表的高质量图表,而且我很惊讶这个问题到现在还没有解决。
无论如何,我在matplotlib上投入了太多时间和代码,所以我不想换其他工具。那么我的问题是,你会如何找到一个解决办法呢?我想一个办法是把标记向左或向右偏移1个像素。我不知道该怎么做。我已经弄明白了如何获取我绘图点的显示坐标,但我该如何制作一个可以保持1像素偏移的交互式图呢?我可以把它们绘制成1像素的偏移,但那样的话就无法缩放或操作图表了。
1 个回答
3
看起来Matplotlib团队已经解决了在使用.savefig()保存.svg或.pdf文件时遇到的问题。不过在保存.png文件时,我发现可以通过使用奇数的误差线粗细来绕过这个问题。举个例子,参考Matplotlib教程中的第一个示例,如果我们使用
plt.errorbar(x, y, yerr=0.4, marker='X', markersize=15)
那么误差条就会像这样偏移:
但是如果我们把线宽设置为3
plt.errorbar(x, y, yerr=0.4, marker='X', markersize=15, elinewidth=3)
那么误差条就会居中,像这样:
这并不是一个完美的解决办法,但如果你不介意线条稍微粗一点,这个方法还是能奏效的。