Matplotlib histtype='stepfilled'故障

Matplotlib histtype='stepfilled'故障,matplotlib,histogram,Matplotlib,Histogram,我正在绘制一些直方图,但histtype=stepfilled有问题。填充曲线明显有一些错误的锚定点: 还是我缺少一些设置 代码非常简单: ax2 = fig.add_subplot(212) ax2.hist(self._neutrinoEnergies, histtype='stepfilled', color=colors.pop()) ax2.set_title(r'Neutrino Energies') ax2.set_xlabel(r'$E_\nu$') ax2.set_ylabel

我正在绘制一些直方图,但histtype=stepfilled有问题。填充曲线明显有一些错误的锚定点:

还是我缺少一些设置

代码非常简单:

ax2 = fig.add_subplot(212)
ax2.hist(self._neutrinoEnergies, histtype='stepfilled', color=colors.pop())
ax2.set_title(r'Neutrino Energies')
ax2.set_xlabel(r'$E_\nu$')
ax2.set_ylabel('count')
ax2.set_yscale('log')
顺便说一句,如果我设置了histtype='bar',则根本没有任何条形图,尽管如果我不将yscale设置为'log',它可以工作:


Matplotlib试图一直填充到0,但0始终在对数刻度上偏离轴,因为log0为负无穷大


修复程序正在调用ax2.set_yscale'log',nonposy='clip'。1.2.1中的更改是,当您调用hist…,log=True时,这会自动发生。如果在执行此操作时手动设置比例,则始终需要非OSY='clip'。

Matplotlib试图一直填充到0,但0始终偏离对数比例上的轴,因为log0为负无穷大


修复程序正在调用ax2.set_yscale'log',nonposy='clip'。1.2.1中的更改是,当您调用hist…,log=True时,这会自动发生。如果在执行此操作时手动设置比例,则始终需要非OSY='clip'。

您使用的mpl版本是什么?我认为最近的bug修复版本1.2.1在这方面做了很多工作。如果它不在那里,它肯定在master上。是的,这显然是一个bug…我正在使用mpl 1.0.1,因为它是我们集群上的最新版本。您可以编译新代码的本地版本,或者对库进行猴子补丁。我看到了修复程序,它们与如何处理具有无意义日志值log0或log-1的值有关。是的,感谢您指出这一点!不幸的是,文件计数配额低得离谱,所以我想打补丁是个好主意……但是Nic Eggerts解决方案工作得很好。是的,我知道已经做了很多工作,但不确定Nic的范围以及其他一些直方图。您使用的是什么版本的mpl?我认为最近的bug修复版本1.2.1在这方面做了很多工作。如果它不在那里,它肯定在master上。是的,这显然是一个bug…我正在使用mpl 1.0.1,因为它是我们集群上的最新版本。您可以编译新代码的本地版本,或者对库进行猴子补丁。我看到了修复程序,它们与如何处理具有无意义日志值log0或log-1的值有关。是的,感谢您指出这一点!不幸的是,文件计数配额低得离谱,所以我可能会考虑打补丁……但Nic Eggerts解决方案效果很好。是的,我知道已经做了很多工作,但不确定Nic的范围以及其他一些直方图。