Python / MatPlotLib产生奇怪的,意外的轮廓

时间:2013-08-19 19:11:02

标签: python matplotlib wolfram-mathematica

我正在尝试轮廓绘制一个在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) 

得到了这个:

enter image description here

我期待一系列同心正方形,如下:

enter image description here

这是我在做的时候得到的

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

在Mathematica中。

我做错了什么?

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

2 个答案:

答案 0 :(得分:5)

对于非网格数据,如评论中所建议的,您可能想要使用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()

output

HTH

答案 1 :(得分:4)

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

mathematica ContourListPlot期望(您调用它的方式){x, y, z}形式的点列表。

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

根据您的输入,它会生成正确的轮廓。要清楚地看到imshow(z)