Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将2D数组的最后一行和最后一列添加到最后位置-极坐标等高线图_Python_Arrays_Matplotlib - Fatal编程技术网

Python将2D数组的最后一行和最后一列添加到最后位置-极坐标等高线图

Python将2D数组的最后一行和最后一列添加到最后位置-极坐标等高线图,python,arrays,matplotlib,Python,Arrays,Matplotlib,我创建了一个极坐标等高线图,并试图通过将第一行的数据添加到末尾来关闭它。 在180度时,请参见本图: 数据是使用meshgrid和griddata模块创建的。 数组大小为nxn类型。 例如: ri-浮动64-(100100)尺寸 θ和轮廓是等效的 打印由matplotlib完成 我该怎么做?这是180度“关闭”绘图的正确方式吗 下面是绘图片段: fig4 = plt.figure() ax = fig4.add_subplot(111) ax = plt.axes(polar=True) im

我创建了一个极坐标等高线图,并试图通过将第一行的数据添加到末尾来关闭它。 在180度时,请参见本图:

数据是使用meshgrid和griddata模块创建的。 数组大小为nxn类型。 例如: ri-浮动64-(100100)尺寸

θ和轮廓是等效的

打印由matplotlib完成

我该怎么做?这是180度“关闭”绘图的正确方式吗

下面是绘图片段:

fig4 = plt.figure()
ax = fig4.add_subplot(111)
ax = plt.axes(polar=True)
image=plt.contourf(thetai,ri/d,contourd,128,vmin=0,extent=([-math.pi,+math.pi,min(ri[0]/d),max(ri[0]/d)]),cmap=plt.cm.Paired)

ax.set_xlabel(r'$\Theta$')
ax.set_ylabel(r'$r$')

从您的问题来看,您的数据看起来是什么样子并不是很清楚。 但一般来说,要关闭极坐标图,数据的最后一点必须与第一点相同。因此,如果您有一个数组
X
,其中
X[:,0]
是角度,
X[:,1]
是半径,您可以通过将第一个元素添加到末端来关闭极坐标图,如下所示:

X_closed = np.append(X,X[[0]],axis = 0)

也就是说,您只需将第一行添加到末尾,而不必将第一列添加到末尾。

您的问题并不清楚您的数据是什么样子的。 但一般来说,要关闭极坐标图,数据的最后一点必须与第一点相同。因此,如果您有一个数组
X
,其中
X[:,0]
是角度,
X[:,1]
是半径,您可以通过将第一个元素添加到末端来关闭极坐标图,如下所示:

X_closed = np.append(X,X[[0]],axis = 0)

也就是说,您只需将第一行添加到末尾,而不必将第一列添加到末尾。

我不确定您的确切绘图,但您可以使用执行您描述的数组操作

我们可以给
np.pad
您的原始数组,以及
((0,1),(0,1))
pad\u宽度,这意味着在左侧填充0列,在右侧填充1列,在顶部填充0列,在底部填充1列。设置
mode='edge'
以复制数组边缘上的值

例如:

In [16]: a = np.array([[1,1,5],[2,2,6],[7,8,9]])
In [17]: a
Out[17]: 
array([[1, 1, 5],
       [2, 2, 6],
       [7, 8, 9]])

In [18]: np.pad(a,((0,1),(0,1)),mode='edge')
Out[18]: 
array([[1, 1, 5, 5],
       [2, 2, 6, 6],
       [7, 8, 9, 9],
       [7, 8, 9, 9]])

我不确定您的确切绘图,但您可以执行您使用描述的数组操作

我们可以给
np.pad
您的原始数组,以及
((0,1),(0,1))
pad\u宽度,这意味着在左侧填充0列,在右侧填充1列,在顶部填充0列,在底部填充1列。设置
mode='edge'
以复制数组边缘上的值

例如:

In [16]: a = np.array([[1,1,5],[2,2,6],[7,8,9]])
In [17]: a
Out[17]: 
array([[1, 1, 5],
       [2, 2, 6],
       [7, 8, 9]])

In [18]: np.pad(a,((0,1),(0,1)),mode='edge')
Out[18]: 
array([[1, 1, 5, 5],
       [2, 2, 6, 6],
       [7, 8, 9, 9],
       [7, 8, 9, 9]])

您好,谢谢您的回答,我的问题是我以前在2d网格上插值过数据,所以半径是100x100数组,θ是100x100.0数组。我的轮廓也由100x100个元素组成。在尝试了你的“附加”片段后,我得到了101x100个元素,并且绘图仍然是“打开”的,所以绘图中奇怪的圆孔看起来不仅仅是通过添加另一列来闭合轮廓的问题。如果你在没有极轴投影的情况下绘制等高线,数据会是什么样子?解决了它,通过外推场解丢失了数据,谢谢你的回答。我的问题是我以前在2d网格上插值过数据,所以半径是100x100数组,θ是100x100.0数组。我的轮廓也由100x100个元素组成。在尝试了你的“附加”片段后,我得到了101x100个元素,并且绘图仍然是“打开”的,所以绘图中奇怪的圆孔看起来不仅仅是通过添加另一列来闭合轮廓的问题。如果在没有极坐标投影的情况下绘制等高线,数据会是什么样子?解决了它,通过外推野外解决方案,数据丢失了,无论如何,谢谢。请显示实际绘制的代码…请显示实际绘制的代码。。。