如何使极坐标图中的角度以 0° 为顺时针方向在顶部
我正在使用 matplotlib 和 numpy 来制作极坐标图。以下是一些示例代码:
import numpy as N
import matplotlib.pyplot as P
angle = N.arange(0, 360, 10, dtype=float) * N.pi / 180.0
arbitrary_data = N.abs(N.sin(angle)) + 0.1 * (N.random.random_sample(size=angle.shape) - 0.5)
P.clf()
P.polar(angle, arbitrary_data)
P.show()
您会注意到 0° 位于绘图上的 3 点钟位置,并且角度是逆时针方向。对于我的数据可视化目的来说,如果 12 点钟方向为 0°,并且角度为顺时针方向,则会更有用。除了旋转数据和手动更改轴标签之外,还有什么方法可以做到这一点吗?
I am using matplotlib and numpy to make a polar plot. Here is some sample code:
import numpy as N
import matplotlib.pyplot as P
angle = N.arange(0, 360, 10, dtype=float) * N.pi / 180.0
arbitrary_data = N.abs(N.sin(angle)) + 0.1 * (N.random.random_sample(size=angle.shape) - 0.5)
P.clf()
P.polar(angle, arbitrary_data)
P.show()
You will notice that 0° is at 3 o'clock on the plot, and the angles go counterclockwise. It would be more useful for my data visualization purposes to have 0° at 12 o'clock and have the angles go clockwise. Is there any way to do this besides rotating the data and manually changing the axis labels?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
更新这个问题,在 Matplotlib 1.1 中,PolarAxes 中有两种方法用于设置 theta 方向(CW/CCW)和 theta=0 的位置。
查看
http://matplotlib.sourceforge.net/devel/add_new_projection.html #matplotlib.projections.polar.PolarAxes
具体请参阅
set_theta_direction()
和set_theta_offset()
。看来很多人都在尝试做类似指南针的情节。
Updating this question, in Matplotlib 1.1, there are now two methods in
PolarAxes
for setting the theta direction (CW/CCW) and location for theta=0.Check out
http://matplotlib.sourceforge.net/devel/add_new_projection.html#matplotlib.projections.polar.PolarAxes
Specifically, see
set_theta_direction()
andset_theta_offset()
.Lots of people attempting to do compass-like plots it seems.
展开klimaat答案 ,举例:
To expand klimaat's answer, with an example:
我发现了——matplotlib 允许你创建自定义投影。我创建了一个继承自
PolarAxes
的模型。I found it out -- matplotlib allows you to create custom projections. I created one that inherits from
PolarAxes
.您可以修改 matplotlib/projections/polar.py。
它说:
让它说:
我实际上没有尝试过,您可能需要根据您的口味调整 x[:] 和 y[:] 分配。此更改将影响所有使用 matplotlib 极坐标图的程序。
You could modify your matplotlib/projections/polar.py.
Where it says:
Make it say:
I didn't actually try it, you may need to tweak x[:] and y[:] assignments to your taste. This change will affect all programs that use matplotlib polar plot.
两个反转例程都应使用变换的完整路径:
现在
,自动创建的 NorthPolarAxes 子类(例如 NorthPolarAxesSubplot)可以访问变换函数。
希望这有帮助。
Both invert routines should use the full path to the transforms:
and
Now, automatically created subclasses of NorthPolarAxes such as NorthPolarAxesSubplot can access the transform functions.
Hope this helps.