我正在尝试使用三列数据在文本文件中创建包含数据列表的等高线图。我知道如何从文本文件中提取数据,但我不知道如何在基于数据列的等高线图中绘制图形。因此,列由';'分隔。第一列是半径,第二列是高度,第三列是k_eff。
74.5;160.0;2.17445
83.0;177.0;2.1883
95.5;202.0;2.19805
101.75;214.5;2.2033
112.0;235.0;2.21083
114.75;240.5;2.21018
125.0;261.0;2.21303
132.75;276.5;2.21633
140.75;292.5;2.2149
152.25;315.5;2.21714
我已经编写了一个基于像我这样的例子的代码,但它似乎没有用。下面是代码。但是使用这段代码我总是得到错误。
QhullError: QH6154 Qhull precision error: Initial simplex is flat (facet 2 is coplanar with the interior point)
While executing: | qhull d Qbb Qz Qt Qc Q12
Options selected for Qhull 2015.2.r 2016/01/18:
run-id 1232967724 delaunay Qbbound-last Qz-infinity-point Qtriangulate
Qcoplanar-keep Q12-no-wide-dup _pre-merge _zero-centrum Qinterior-keep
Pgood _max-width 3.5e+02 Error-roundoff 7.1e-13 _one-merge 5e-12
Visible-distance 1.4e-12 U-coplanar-distance 1.4e-12 Width-outside 2.8e-12
_wide-facet 8.5e-12 .....
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import griddata
data_file = np.loadtxt('new7.txt', delimiter=';')
cz = data_file[:,0]
h = data_file[:,1]
k_eff = data_file[:,2]
[CZ, H] = np.meshgrid(np.unique(cz), np.unique(h))
Z = griddata(np.column_stack((cz,h)),k_eff,(CZ,H))
contour_graph = plt.contour(CZ,H,Z)
plt.xlabel('Radius (cm)')
plt.xlabel('Height (cm)')
plt.title('multiplication factor for different deminsions')
plt.clabel(contour_graph)
plt.grid()
plt.savefig('contour_plot4.png')
但我的只会有不同的价值观。
发布于 2019-06-05 16:42:08
根据文档(https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.griddata.html),您拥有的前两个参数是要传递的错误形状griddata
。
Z = griddata(np.column_stack((cz,h)), k_eff, (CZ, H))
这样做应该让cz
和h
成一个NX2 ndarray,这griddata
会接受。
https://stackoverflow.com/questions/-100006935
复制相似问题