如何在python中使用x、y和z绘制强度图?

如何在python中使用x、y和z绘制强度图?,python,matplotlib,imshow,Python,Matplotlib,Imshow,我有一个名为“年龄”的x值数组,一个名为“重量”的y值数组和一个名为“卡路里”的z值数组。我想绘制x与y与强度的关系图。基本上,热量消耗取决于年龄和体重 我可以在matlab中使用imagesc实现这一点,但我需要Python方面的帮助 age = [5,5,5,5,5,10,10,10,10,10....40,40,40,40,40], weight = [40,50,55,60,65,80,85,90,95,100....170,190,210,250,300] calories =[

我有一个名为“年龄”的x值数组,一个名为“重量”的y值数组和一个名为“卡路里”的z值数组。我想绘制x与y与强度的关系图。基本上,热量消耗取决于年龄和体重

我可以在matlab中使用imagesc实现这一点,但我需要Python方面的帮助

age = [5,5,5,5,5,10,10,10,10,10....40,40,40,40,40],  
weight = [40,50,55,60,65,80,85,90,95,100....170,190,210,250,300]
calories =[ 500,550,560,600,650,1000,1200,1300,1400,1500...2000,2300,2500,3000,5000]
我尝试了
plt.pcolormesh
plt.imshow
,但这两个imshow都不允许我将3个变量作为输入

我还尝试使用x,y阵列创建网格网格,但我没有得到正确的强度或轴

x=np.unique(年龄)
y=np.唯一(重量)
十、 Y=np.meshgrid(X,Y)
Z=卡路里。重塑(透镜(y),透镜(x))
plt.pcolormesh(X,Y,Z)
plt.show()

plt.imshow(年龄、体重、卡路里)

我希望看到x轴上有年龄,y轴上有重量的图像图,以及从浅到深的颜色条,对于
imshow()
,水平和垂直坐标以及rgb颜色代码组合成一个数组——参数
x
(见文档中的说明)。或者,如果你的数据集没有覆盖网格中的每一点,你可以考虑一个散点图,每个标记的大小和/或颜色与“代码>卡路里< /代码>成比例。

< P>这是花哨的数据,但是尝试一下:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as mclr

nx = 38; ny = 18

x = np.linspace(0,nx-1,nx)
y = np.linspace(0,ny-1,ny)

X,Y = np.meshgrid(x, y, indexing='ij')
Z =np.sqrt(X*X + Y*Y) # set a fancy Z function

fig = plt.figure(figsize=(22,11)) 
ax1 = fig.add_subplot(121)
ax1.pcolormesh(X, Y, Z, edgecolors='w',cmap="plasma")
ax1.set_aspect('equal')

您使用的曲线图将取决于数据的形状,以及您的
卡路里
数组是否是
年龄
体重
的函数。如果
carries
是2D,那么您应该使用类似于
plt.contourf()
plt.imshow()
,或
plt.pcolormesh()
。如果你所有的数组都有相同的形状,你可能想考虑一个像AFB那样的散点图。 例如,使用数据的子集,您可以获得以下信息:

import matplotlib.pyplot as plt
import numpy as np

age = [5,5,5,5,5,10,10,10,10,10,40,40,40,40,40] 
weight = [40,50,55,60,65,80,85,90,95,100,170,190,210,250,300]
calories =[ 500,550,560,600,650,1000,1200,1300,1400,1500,2000,2300,2500,3000,5000]


fig = plt.figure(figsize=(6,6))
ax = plt.subplot(111)

sc = plt.scatter(age,weight, s = 200, c=calories, cmap=plt.cm.jet)

cbar = fig.colorbar(sc, orientation='horizontal')    

plt.show()

您的x、y、z值的形状是什么?谢谢您的帮助。我还尝试将数据导入熊猫数据框,并使用seaborn热图制作图像。这似乎也起作用,所以你应该知道,这显示了完全不同的东西。热图显示数据所在位置的密度,而不是值本身。Tx!如果您的答案是可接受的,那么您可以单击“可接受”复选框(该复选框位于向上/向下的投票标志下方,单击后变为绿色)。所以每个人都知道,不需要更多的答案,这项任务已经完成。