我想画一个函数f(x,y)对x和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
进行对比。
发布于 2019-06-13 07:10:14
你需要做的就是使用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()
https://stackoverflow.com/questions/56568927
复制相似问题