我正在尝试轮廓绘制一个在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]&)]
在Mathematica中。
我做错了什么?
编辑:我意识到为给定数据绘制轮廓的方法不止一种。在这种情况下,一系列同心圆也可以。答案 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()
HTH
答案 1 :(得分:4)
问题是因为预期的输入完全不同
mathematica ContourListPlot
期望(您调用它的方式){x, y, z}
形式的点列表。
在matplotlib contour
(你调用它的方式)中需要一个z
值的数组。
根据您的输入,它会生成正确的轮廓。要清楚地看到imshow(z)
。