如何使用鼠标左键拖动在matplotlib的极坐标轴上平移

问题描述 投票:0回答:1

看起来平移功能在极轴上效果不佳。当我拖动鼠标左键时,它不会平移绘图。请参阅下面的图片:

mouse drag to pan

平移功能在 matplotlib 的笛卡尔轴上运行正常。

这是一个非常简单的极坐标图测试代码:

import matplotlib.pyplot as plt
import numpy as np

r = np.arange(0, 2, 0.01)
theta = 2 * np.pi * r

fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(theta, r)
ax.set_rmax(2)
ax.set_rticks([0.5, 1, 1.5, 2])  # Less radial ticks
ax.set_rlabel_position(-22.5)  # Move radial labels away from plotted line
ax.grid(True)
ax.set_title("A line plot on a polar axis", va='bottom')


plt.show()

我想要的是平移并放大极轴,这样我就可以看到绘图的细节。目前,缩放仅发生在中心周围。所以,我需要一个平移功能。

有什么想法吗?谢谢。

编辑:

https://matplotlib.org/3.7.5/gallery/axisartist/demo_floating_axis.html

在上面的示例代码中,在笛卡尔轴内绘制了一个浮动极轴,我可以使用鼠标拖动来平移整个外轴,但我不确定如何在内极轴内绘制一些曲线.

python matplotlib polar-coordinates
1个回答
0
投票

可能与GH1700有关。一个“解决方法”是使用

NorthPolarStereo
投影:

import cartopy.crs as ccrs
import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(subplot_kw={"projection": ccrs.NorthPolarStereo()})

ax.set_extent([-180, 180, -1, 90], crs=ccrs.PlateCarree())

r = np.arange(0, 2, 0.01)
theta = 2 * np.pi * r
lat = 90 - r * 45
lon = np.degrees(theta) % 360
lon = (lon - 270) % 360
ax.plot(lon, lat, transform=ccrs.Geodetic())

ax.gridlines(draw_labels=False, ylim=(0, 90))
ax.set_frame_on(False)
ax.set_title("A line plot on a polar axis", va="bottom")

plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.