【发布时间】:2014-04-17 06:08:20
【问题描述】:
我有一些我有兴趣分析的二维范围内的数据。这些数据最初位于列表 x、y 和 z 中,其中 z[i] 是位于 (x[i],y[i]) 处的点的值。然后我使用
将这些数据插入到常规网格中x=np.array(x)
y=np.array(y)
z=np.array(z)
xi=np.linspace(minx,maxx,100)
yi=np.linspace(miny,maxy,100)
zi=griddata(x,y,z,xi,yi)
然后我使用
绘制了 xi,yi,zi 数据plt.contour(xi,yi,zi)
plt.pcolormesh(xi,yi,zi,cmap=plt.get_cmap('PRGn'),norm=plt.Normalize(-10,10),vmin=-10,vmax=10)
这产生了这个情节:
在此图中,您可以看到值为零的 S 形曲线(此外:数据的变化没有颜色栏中显示的那么快——这只是我将数据标准化为 - 10-10 当它实际上远远超出该范围时;我这样做是为了使零值区域显示得更好——也许还有更好的方法来做到这一点......)。
散点只是我拥有原始数据的点(是的,在这种情况下,我的数据已经在常规网格上)。我很好奇是否有一种好方法可以让我提取曲线为零的值并获得 x,y 对,如果绘制为一条线,将在颜色网格中追踪该零区域。我可以插值到一个非常精细的网格,然后强力搜索最接近零的值。但是有没有更自动的方式来做到这一点,或者更自动的方式来绘制这个“零线”?
还有一个次要问题:我正确使用了 griddata,对吗?我有这些简单的一维数组,尽管在其他地方人们在调用 griddata 之前会使用各种网格网格、加载文本等。
【问题讨论】:
-
可以通过
c = pl.contour(..., levels=[0])绘制0的曲线,也可以从c获取曲线上的点。如果这是你想要的,我可以添加一个答案来展示如何获得积分。 -
谢谢 HYRY,这正是我想做的。从这个图中可以看出,我能够使用“级别”选项绘制线条:i61.tinypic.com/2ekkyup.png。如果您不介意向我展示如何轻松提取分数,那就太好了,我很乐意接受这个答案。
标签: python numpy matplotlib scipy