【发布时间】:2017-03-09 07:21:22
【问题描述】:
论坛的初学者。请帮忙。我有一个数据集:x,y 坐标,每个 x,y 都有一个值。我想绘制一个 2d 直方图,用色标显示每个 bin 中的值的总和。 matplotlib hexbin 是直截了当的。我可以做这个。例如:
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import LogNorm
xpos = np.random.rand(0,10)
ypos = np.random.rand(0,10)
plt.hexbin(x = xpos, y = ypos, C=mass, cmap= plt.cm.jet, gridsize=100, reduce_C_function=sum, bins="log")
cb = plt.colorbar()
cb.ax.set_ylabel('log (sum value in each bin)')
plt.xlabel('Xpos')
plt.ylabel('Ypos')
plt.show()
但是,我正在努力使用 histogram2d 或 matplotlib hist2d 制作类似的图。我想我必须以某种方式结合 binned_statistic_2d 和 histogram2d 。如果我将上面的 plt.hexbin 行替换为此没有问题:
plt.hist2d(x = xpos, y = ypos, bins = 50, norm = LogNorm())
有什么线索吗?我在论坛上看过,但似乎找不到有效的代码。
【问题讨论】:
-
这是做什么的:
np.random.rand(0,10,0.1)? -
没有。我有一个真实的数据集 x,y。我看到错别字了。我会改正的。
-
只是一个更新。我已经解决了这个问题。我没有使用 hist2d,而是编写了自己的分箱代码。
-
使用 numpy 进行分箱的可能解决方案:stackoverflow.com/questions/45777934/…
标签: python matplotlib