这里记录了错误:
Matplotlib errorbar not centered on marker
在这里: 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像素偏移绘制它们,但是你无法缩放或操作绘图。
答案 0 :(得分:2)
似乎Matplotlib团队使用.svg或.pdf修复了issue when calling savefig(),但对于.png,我发现你可以通过使用奇数作为错误行的厚度来解决这个问题。如果我们使用
,请使用Matplotlib tutorial上的第一个示例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)
然后条形图像这样居中:
这不是一个完美的解决方案,但是如果你不介意稍微粗一点的话,那就可以了。