首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用非均匀矩阵网格绘制Matplotlib等高线

使用非均匀矩阵网格绘制Matplotlib等高线
EN

Stack Overflow用户
提问于 2019-06-13 03:12:27
回答 1查看 613关注 0票数 0

我想画一个函数f(x,y)对x和x-y的等高线图。Y网格中的间距与x网格中的间距不同,因此x-y是二维的,而x是一维的。

我不知道如何设置网格。函数tricontourf可以处理非均匀网格,但只有在两个轴都是一维的情况下才看起来是这样的。contour可以处理矩阵,但仅限于f(x,y),而我需要其中一个轴是矩阵。

伪代码将如下所示:

代码语言:javascript
运行
复制
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进行对比。

EN

Stack Overflow用户

回答已采纳

发布于 2019-06-13 07:10:14

你需要做的就是使用np.meshgrid()创建你的网格,然后绘制一个contourcontourf图,np.meshgrid会根据你给出的内容创建不规则的网格。您不需要曲面打印,因为您的数据不是真正的曲面。

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

代码语言:javascript
运行
复制
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()

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56568927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档