具有不均匀矩阵矩阵的Matplotlib等高线图

时间:2019-06-12 19:12:26

标签: python matplotlib

我想针对x和x-y轮廓绘制函数f(x,y)。 y网格中的间距与x网格中的间距不同,因此x-y是二维的,而x是一维的。

我不知道如何设置网格。函数tricontourf可以处理不均匀的网格,但是看起来好像两个轴都是一维的。 contour可以处理矩阵,但只能用于f(x,y),而我需要其中一个轴是矩阵。

伪代码如下所示:

import matplotlib.pyplot as plt

def twoDfunction(x,y):
   return x + y # my function is more complicated than this

xaxis = np.linspace(0,10,100)
yaxis = np.linspace(0,10,22)
xminusyaxis = np.subtract(xaxis,yaxis)
functionsurfacevalues = twoDfunction(xaxis,yaxis)

fig =plt.figure(figsize=(10,10),dpi=300,facecolor='w')
ax1 = plt.subplot(111)
ax1.tricontourf(xaxis, xminusyaxis, functionsurfacevalues)

我希望伪代码绘制functionsurfacevaluesxxminusy的关系。

1 个答案:

答案 0 :(得分:1)

您需要做的是使用np.meshgrid()创建网格,然后绘制contourcontourf图。np.meshgrid将根据您提供的内容制作不规则网格。您不需要表面图,因为您的数据实际上不是表面。

您遇到的主要问题是,因为x和y轴的长度不同,所以您不能减去它们。否则,解决方案很容易,您可以遵循以下代码。

import matplotlib.pyplot as plt

def twoDfunction(x,y):
   return (x + y) # my function is more complicated than this

xaxis = np.linspace(0,10,100)
yaxis = np.linspace(0,5,100)

xminusyaxis = np.subtract(xaxis,yaxis)

xx,yy = np.meshgrid(xaxis,xminusyaxis)

fig =plt.figure(figsize=(10,10),dpi=300,facecolor='w')
ax1 = plt.subplot(111)
ax1.contourf(xx, yy, twoDfunction(xx,yy))


plt.show()

enter image description here