gpt4 book ai didi

python - 在python中的一个图中叠加热图

转载 作者:行者123 更新时间:2023-11-28 17:29:56 24 4
gpt4 key购买 nike

我有两个 100x100 的矩阵

u[0] and u[1]

我已将两个数组的值设置在 0 和 1 之间,以使用 matplotlib 函数 pcolormesh 制作热图。

我可以通过以下方式获得一张热图:

 fig1=plt.pcolormesh(u[0], cmap=plt.cm.jet)

但我希望能够将我的两个热图放在同一个图形上,这样我就可以一起查看它们。为此,我为两个阵列定义了一个全局位置,它描述了阵列的质心,

cm[0] and cm[1] 

如何将数组的这种相对全局位置实现到一个图形上并绘制我的数组之间的相对位置?

例如,如果

u[0]=np.array(([0,1,0],[1,1,1],[0,1,0])) is at cm=[10,20]
u[1]=np.array(([0,1,0],[1,1,1],[0,1,0])) is at cm=[40,40]

那么脑子里的情节就是这样的:

example plot

我想我可以用这个:

 plt.pcolormesh(u[0], cm[0], cmap=plt.cm.jet)
plt.pcolormesh(u[1], cm[1], cmap=plt.cm.jet)

但是 plt.pcolormesh 没有接受那么多参数。

最佳答案

你走在正确的轨道上,你只需要看看the manual for pcolormesh仔细一点。您可以pcolormesh指定平面内坐标:

pcolormesh(X, Y, C)

手册还提示您可以将一维数组添加为 XY,这样您就不必乱用 numpy.meshgrid.

所以你应该这样做:

import matplotlib.pyplot as plt
import numpy as np

us = [np.array(([0,1,0],[1,1,1],[0,1,0])), np.array(([0,1,0],[1,1,1],[0,1,0]))]
centers = [[10,20],[40,40]]

plt.figure()
for cm,u in zip(centers,us):
n,m = u.shape
X = np.arange(n+1)
Y = np.arange(m+1)
# center and shift coordinates
X = X - n/2.0 + cm[0]
Y = Y - m/2.0 + cm[1]
plt.pcolormesh(X,Y,u)

由于我们从数据数组的索引构造了 XY 数据,因此每个“热图”的大小都比您的示例图小得多,但是这可以通过对 XY 数组进行一些缩放来轻松解决。上面代码的结果:

result

关于python - 在python中的一个图中叠加热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35162798/

24 4 0
文章推荐: javascript - JavaScript Canvas 中透明框后面的模糊
文章推荐: html - 调整图像大小以占据整个
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com