根据装仓的xyz数据绘制二维等高线图



EDIT:我在评论中做出了回应,但我在标记的帖子中尝试了这种方法——我的z数据不是从x和y计算出来的,所以我不能使用这样的函数。

我有xyz数据,看起来如下:

新:我生成的文件中的xyz数据-我将这些数据提取为x,y,z

我拼命想得到一个以x对y,z为颜色的情节。

y是在不均匀的仓中从(例如(2.5到0.5的仓化数据。因此,对于一组x和z数据,y值都是相同的。x数据是温度,z是密度信息。

所以我期待的是一个看起来像一堆堆叠的矩形的图,其中一个y值仓有一个颜色梯度,它跨越了很多x值。

然而,我尝试过的所有代码都不喜欢我的z值,我能做的最好的事情是:

轴看起来是正确的,但颜色条从y轴的底部到顶部,而不是在正确的y值上为每个x值绘制一个z值

我用这个代码工作:

import matplotlib.cm as cm
from matplotlib.colors import LogNorm
import numpy as np
import scipy.interpolate
data=pandas.read_csv('Data.csv',delimiter=',', header=0,index_col=False)
x=data.tempbin
y=data.sizefracbin
z=data.den
x=x.values
y=y.values
z=z.values
X,Y=np.meshgrid(x,y)
Z=[]
for i in range(len(x)):
Z.append(z)
Z=np.array(Z)
plt.pcolormesh(X,Y,Z)
plt.colorbar()
plt.show()

我已经尝试了我在网上能找到的一切,比如在这里的帖子中:matplotlib从x,y,z值的2D绘图

但要么是重塑我的z值有问题,要么就是它给了我带有各种错误的空图——我认为这一切都与我的z值有关。

我是不是错过了什么?谢谢你的帮助!

编辑回应:BeingErnest 的重要性

我试过这个:

import matplotlib.cm as cm
from matplotlib.colors import LogNorm
import numpy as np
import scipy.interpolate
data=pandas.read_csv('Data.csv',delimiter=',', header=0,index_col=False)
data.sort_values('sizefrac')
x=data.tempbin
y=data.sizefrac
z=data.INP
x=x.values
y=y.values
z=z.values
X=x[1:].reshape(N,N)
Y=y[1:].reshape(N,N)
Z=z[1:].reshape(N,N)
plt.pcolormesh(X,Y,Z)
plt.colorbar()
plt.show()

得到了一个非常空洞的情节。刚刚向我展示了轴和颜色条,如我所附的图像中所示,但轴内为纯白!没有任何错误。。。重塑我需要从每个数据点中删除一个数据点,否则重塑将无法工作

根据您的问题调整链接问题,您应该得到:

import numpy as np
import matplotlib.pyplot as plt
x = list(range(10))*10
y = np.repeat(list(range(10)), 10)
# build random z data
z = np.multiply(x, y)
N = int(len(z)**.5)
Z = z.reshape(N, N)
plt.imshow(Z[::-1], extent=(np.amin(x), np.amax(x), np.amin(y), np.amax(y)), aspect = 'auto')
plt.show()

Silmathoron在对他上面的答案的评论中找到了答案-上面的答案没有帮助,但在评论中,他注意到X、Y数据没有以w的方式网格化,这会在图上创建矩形,还提到Z需要比X和Y小一个-由此我可以修复我的代码-感谢所有

最新更新