我使用 matplotlib.hist2d 在 Python 中生成了一些数据。数据示例如下所示。
如您所见,通过在整个绘图中追踪相同的颜色可以找到该数据中的一些等高线。我看到一个以 0.015 为中心的 Gamma 分布。我想获取这些数据并收集这些轮廓,这样我就可以看到穿过每个颜色级别的线条轨迹。我尝试像这里一样使用轮廓函数
counts, xedges, yedges, Image = hist2d(x, y, bins=bins, norm=LogNorm(), range=[[0, 1], [0, 400]])
contour(counts)
但这似乎没有产生任何结果。
有谁知道获得这些轮廓的最佳方法?理想情况下,我想采用这些轮廓并为它们拟合函数(如 Gamma 函数),然后获取函数参数。
谢谢
最佳答案
所以问题是 hist2d
创建的图像是在数据坐标中绘制的,但您尝试创建的轮廓是在像素坐标中。解决此问题的简单方法是指定轮廓的范围
(即在 x 和 y 轴上重新缩放/重新定位它们)。
例如:
from matplotlib.colors import LogNorm
from matplotlib.pyplot import *
x = np.random.normal(5,10,100000)
y = np.random.normal(5,10,100000)
counts,ybins,xbins,image = hist2d(x,y,bins=100,norm=LogNorm())
contour(counts,extent=[xbins.min(),xbins.max(),ybins.min(),ybins.max()],linewidths=3)
将产生:
关于python - 在 matplotlib 中将 hist2d 输出转换为轮廓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26351621/