Skip to main content
 首页 » 编程设计

python之将 Matplotlib 补丁与极坐标图混合

2025年05月04日8leader

我正在尝试在极坐标中绘制一些数据,但我不想要使用 Matplotlib polar() 函数获得的标准刻度、标签、轴等。我想要的只是原始图,没有别的,因为我正在处理手动绘制的补丁和线条的所有内容。

以下是我考虑过的选项:

1) 使用 polar() 绘制数据,隐藏多余的东西(使用 ax.axes.get_xaxis().set_visible(False) 等)和然后绘制我自己的轴(使用 Line2D、Circle 等)。问题是当我调用 polar() 并随后添加一个 Circle 补丁时,它是在极坐标中绘制的,最终看起来像一个无穷大符号。此外,缩放似乎不适用于 polar() 函数。

2) 跳过 polar() 函数并以某种方式使用 Line2D 手动制作我自己的极坐标图。问题是我不知道如何让 Line2D 在极坐标中绘制,也没有想出如何使用变换来做到这一点。

知道我应该如何进行吗?

请您参考如下方法:

考虑到您想做的事情,您的选项 #2 可能是最简单的。因此,您将留在直角坐标中,将您的函数从极坐标修改为直角坐标,并使用 plot() 绘制它(这比使用 `Line2D' 更容易)。

可以通过以下方式将极坐标函数转换为矩形函数:

def polar_to_rect(theta, r): 
    return (r*cos(theta), r*sin(theta)) 

绘图可以通过以下方式完成:

def my_polar(theta, r, *args, **kwargs): 
    """ 
    theta, r -- NumPy arrays with polar coordinates. 
    """ 
    rect_coords = polar_to_rect(theta, r) 
    pyplot.plot(rect_coords[0], rect_coords[1], *args, **kwargs) 
    # You can customize the plot with additional arguments, or use `Line2D` on the points in rect_coords.