現時点では、下のヒストグラムとしてプロットしています。
等間隔のヒストグラムでデータを再ビン化したいだけですが、新しいスケールを使用しています。幅を指定する必要がありますが、xscale,yscale が軸をリセットする方法が原因で、幅を定義する方法がわかりません。つまり、各インスタンス (linear-log、log-log など) で、何をすべきか
ax.set_xlim(min(bin_edges), max(bin_edges))
ax.set_ylim(min(hist), max(hist))
に設定されますか?または、xscale とyscaleを「linear」または「log」に設定したという事実に基づいて、ヒストグラムが正しく見えるように自動的に設定する方法はありますか。もっと簡単な解決策があると確信しています。現時点では、ログ スペースに移動すると、バーが重なって幅が異なります。
if self.xscale_hist == 'linear-linear':
ax.set_xscale("linear")
ax.set_yscale("linear")
hist, bin_edges = np.histogram(self.tmphistdata, bins=self.numhistbins)
width = (max(bin_edges)-min(bin_edges))/len(bin_edges)
self._display_points = ax.bar(bin_edges[:-1], hist, width = width, facecolor='green')
if self.xscale_hist == 'linear-log':
ax.set_xscale("linear")
ax.set_yscale("log")
hist, bin_edges = np.histogram(self.tmphistdata, bins=self.numhistbins)
hist = np.log10(hist)
width = (max(bin_edges)-min(bin_edges))/len(bin_edges)
self._display_points = ax.bar(bin_edges[:-1], hist, width = width, facecolor='green')
if self.xscale_hist == 'log-linear':
ax.set_xscale("log")
ax.set_yscale("linear")
hist, bin_edges = np.histogram(self.tmphistdata, bins=self.numhistbins)
bin_edges = np.log10(bin_edges)
width = (max(bin_edges)-min(bin_edges))/len(bin_edges)
self._display_points = ax.bar(bin_edges[:-1], hist, width = width, facecolor='green')
if self.xscale_hist == 'log-log':
ax.set_xscale("log")
ax.set_yscale("log")
hist, bin_edges = np.histogram(self.tmphistdata, bins=self.numhistbins)
bin_edges = np.log10(bin_edges)
hist = np.log10(hist)
width = (max(bin_edges)-min(bin_edges))/len(bin_edges)
self._display_points = ax.bar(bin_edges[:-1], hist, width = width, facecolor='green')