我想针对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)
我希望伪代码绘制functionsurfacevalues
与x
和xminusy
的关系。
答案 0 :(得分:1)
您需要做的是使用np.meshgrid()
创建网格,然后绘制contour
或contourf
图。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()