gpt4 book ai didi

python - 在 matplotlib 中将二维直方图绘制为热图

转载 作者:太空宇宙 更新时间:2023-11-04 03:49:51 25 4
gpt4 key购买 nike

我有 3 维数据,我想将其绘制为以下直方图 here .对于每个箱子,我都有一个包含两列的文本文件,例如

1.12    0.65
1.41 0.95
1.78 1.04
2.24 2.12

等第一列的第一个条目(在 .txt 中)为我提供了第一个图 block 中心的值,第一列的第二行为我提供了第二个图 block 中心的值等。第二列是指颜色条上的值。第一列中的值以及 bin 大小按对数间隔。我想在 matplotlib 中尽可能接近上面的内容(忽略箭头)。

最佳答案

我建议你使用 PolyCollection:

import numpy as np
import pylab as pl
import matplotlib.collections as mc

x = np.logspace(1, 2, 20)
polys = []
values = []
for xs, xe in zip(x[:-1], x[1:]):
y = np.logspace(1.0, 2+np.random.rand()+2*np.log10(xs), 30)
c = -np.log(xs*y)
yp = np.c_[y[:-1], y[:-1], y[1:], y[1:]]
xp = np.repeat([[xs, xe, xe, xs]], len(yp), axis=0)
points = np.dstack((xp, yp))
polys.append(points)
values.append(c[:-1])

polys = np.concatenate(polys, 0)
values = np.concatenate(values, 0)

pc = mc.PolyCollection(polys)
pc.set_array(values)
fig, ax = pl.subplots()
ax.add_collection(pc)
ax.set_yscale("log")
ax.set_xscale("log")
ax.autoscale()
pl.colorbar(mappable=pc)

这是输出:

enter image description here

关于python - 在 matplotlib 中将二维直方图绘制为热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21837713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com