我正在尝试在极坐标中绘制一些数据,但我不想要使用 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.
