【发布时间】:2018-09-12 15:46:00
【问题描述】:
我有一个三列数组,包含两个参数,即 x 和 y 轴,以及这两个参数的卡方。考虑到卡方值,我应该制作这两个参数的网格,然后绘制 1-sigma、2-sigma 和 3-sigma 等高线。我怎样才能在 matplotlib 中做到这一点? 这是我的代码: x(这是“1.txt”文件中的第二列)和y(这是第三列)应该从min到max排列,为了制作x和y轴,我认为可以使用meshgrid完成.而 z(“1.txt”文件中的第一列)是卡方。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.mlab import griddata
x = np.genfromtxt('1.txt', usecols=(1))
y = np.genfromtxt('1.txt', usecols=(2))
z = np.genfromtxt('1.txt', usecols=(0))
plt.figure()
X, Y = np.meshgrid(x,y)
Z= griddata(x,y,z,X,Y)
contour=plt.contour(X,Y,Z)
plt.show()
此代码遇到错误: “RuntimeError:要在 griddata 中使用 interp='nn'(自然邻域插值),必须安装 natgrid。从 http://github.com/matplotlib/natgrid 安装它或改用 interp='linear'。” 当我使用 interp='linear' 时,运行代码会持续很长时间而没有任何结果。有什么办法可以解决这个问题吗?
【问题讨论】:
-
如果没有任何示例数据、尝试的代码以及可能的所需示例输出,将很难在这里获得具体的解决方案。你应该看看如何创建一个Minimal, Complete, and Verifiable example
标签: python matplotlib plot