我的数据是沿着圆的直径以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()
答案 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个离散步长。