使用numpy外推轮廓图

时间:2018-02-03 06:28:40

标签: python numpy matplotlib plot contour

我的数据是沿着圆的直径以1毫米的增量取的,即从90度开始到270度结束。我想以每1毫米的增量推断数据,以填充圆的其余部分(在该径向点)。例如:

10毫米圆圈:

>Distance along diameter (mm)     Value (a.u.)  
>1                 208  
>5                 210  (centre `(0,0)`)  
>7                 209  
>10                208

现在我想要类似的东西:this image。右侧有一个图例/键,并且数据外推,因此过渡是平滑的。径向数据点之间。显然,实际上只需要一个半径的值,但我希望直径中的另一半值加强在第一个半径中观察到的值。

所以,我希望底部半径的值能够混合'在顶部半径的值沿着直径从180度到0度。这是清楚的吗?

我最初的(可怕的):

import numpy as np
import matplotlib.pyplot as plt

data = np.genfromtxt('data.txt',delimiter=',')

r = data[:,][:,0]
values = data[:,][:,1]
theta = np.zeros(len(data))

r, theta = np.meshgrid(r, theta)    
plt.figure()
fig, ax = plt.subplots(subplot_kw=dict(projection='polar'))
ax.contourf(theta, r, values)
plt.show()

我知道ax.contourf的输入必须是2D数组。但是,我的数据没有真正的theta值。我只想要一系列同心圆,所以我将数据修改为:

80,0,208.1790755
80,90,208.1790755
80,180,208.1790755
80,270,208.1790755
79,0,208.1322654
79,90,208.1322654
79,180,208.1322654
79,270,208.1322654
76,0,208.1804241
76,90,208.1804241
76,180,208.1804241
76,270,208.1804241
etc

我无法理解为什么以下内容无法发挥作用:

data = np.genfromtxt('data.txt',delimiter=',')

r = data[:,][:,0]
values = np.array(data[:,][:,2])
theta = np.radians(data[:,][:,1])

r, theta = np.meshgrid(r, theta)

fig, ax = plt.subplots(subplot_kw=dict(projection='polar'))
ax.contourf(theta, r, values)
plt.show()

1 个答案:

答案 0 :(得分:0)

原因是int codeNumber; System.out.println("Enter country code:"); if(in.hasNextInt()) { codeNumber = in.nextInt(); } else { System.out.println("Invalid Code !!"); } 仅将二维数组作为ax.contourf(x, y, z)z数组的格式已经正确,因此r会将您的值放入2D数组中,该数组可以作为values_2d = values*r/r传递给ax.contourf()ax.contourf(theta, r, values_2d, 40)定义数据的分辨率,即40数据的最小值和最大值之间的40个离散步长。