【问题标题】:Python add last row and column of 2darray to last positions - Polar Contour plotPython将2darray的最后一行和最后一列添加到最后一个位置 - 极坐标图
【发布时间】:2015-12-01 11:51:13
【问题描述】:

我创建了一个极线图,并尝试通过将第一行的数据添加到末尾来关闭它。 在这张图片中看到 180 度: PolarPlot

数据是通过使用 meshgrid 和 griddata 模块创建的。 数组大小是 nxn 类型。 例如: ri - float64 - (100,100) 大小

print ri 
    [[ 0.00160738  0.00184056  0.00207375 ...,  0.23409252  0.23432571
   0.23455889]
 [ 0.00160738  0.00184056  0.00207375 ...,  0.23409252  0.23432571
   0.23455889]
 [ 0.00160738  0.00184056  0.00207375 ...,  0.23409252  0.23432571
   0.23455889]

theta 和轮廓是等价的。

绘图由matplotlib完成

我该怎么做?这是以 180 度“关闭”情节的正确方法吗?

这里是剧情 sn-p:

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$')

【问题讨论】:

  • 请显示实际绘图的代码...

标签: python arrays matplotlib


【解决方案1】:

我不确定您的确切情节,但您可以使用 numpy.pad 执行您描述的数组操作。

我们可以给np.pad你的原始数组,以及((0,1),(0,1))的pad_width,这意味着左边填充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]])

【讨论】:

    【解决方案2】:

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

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

    即您只需将第一行添加到末尾,而不是第一列。

    【讨论】:

    • 您好,感谢您的回答,我的问题是我之前在二维网格上插值过数据,所以半径是 100x100 数组,θ 是 100x100.array。我的轮廓也包含 100x100 个元素。在尝试了你的“附加”sn-p 之后,我总是得到 101x100 元素,而且情节仍然是“开放的”
    • 好的,所以你的情节中奇怪的圆形 hole 看起来不仅仅是通过添加另一列来关闭轮廓的问题。如果在没有极坐标投影的情况下绘制轮廓,数据会是什么样子?
    • 解决了,外推现场解法数据丢失,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 2021-06-19
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    相关资源
    最近更新 更多