1

我正在尝试绘制一个函数,该函数在单位正方形的 4 个顶点处为 0,在该正方形的中间为 1。我试过这个:

import matplotlib.pyplot 
z = [[0,0,0], [1,0,0], [0,1,0], [1,1,0], [.5,.5,1]] 
cn = matplotlib.pyplot.contour(z) 
matplotlib.pyplot.show(cn) 

得到了这个:

在此处输入图像描述

我期待一系列同心正方形,像这样:

在此处输入图像描述

这就是我做的时候得到的

ListContourPlot[{{0,0,0}, {1,0,0}, {0,1,0}, {1,1,0}, {.5,.5,1}}, 
ColorFunction -> (Hue[#1]&)] 

在数学。

我做错了什么?

编辑:我意识到为给定数据绘制轮廓的方法不止一种。在这种情况下,一系列同心圆也可以。

4

2 回答 2

4

对于非网格数据,如评论中所建议的,您可能想要使用 tricontour 函数:

>>> import matplotlib.pyplot as plt
>>> z = [[0,0,0], [1,0,0], [0,1,0], [1,1,0], [.5,.5,1]] 
>>> x, y, z = zip(*z)
>>> cn = plt.tricontourf(x, y, z)
>>> plt.show()

输出

高温高压

于 2013-08-20T08:46:00.343 回答
4

问题是因为预期的输入完全不同

mathematicaContourListPlot期望(您称呼它的方式)形式为 的点列表{x, y, z}

matplotlibcontour中(你调用它的方式)需要一个z值数组。

鉴于您的输入,它正在生成正确的轮廓。看清楚这个看看imshow(z)

于 2013-08-19T21:00:41.380 回答