matplotlib 具有顺时针方向的径向文字注记极坐标图

isr3a4wc  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(100)

我想在极坐标图的半径上放置一些文字。当使用默认的θ零点位置和方向时,它会按预期工作

fig = plt.figure(figsize=(6,6))
ax = fig.add_subplot(111, polar=True)
ax.set_yticklabels("")
ax.annotate('test',
            xy=(np.deg2rad(90), 0.5),
            fontsize=15,
            rotation=90)

然而,当改变方向时,

fig = plt.figure(figsize=(6,6))
ax = fig.add_subplot(111, polar=True)
ax.set_theta_zero_location("N")
ax.set_theta_direction(-1)
ax.set_yticklabels("")
ax.annotate('test',
            xy=(np.deg2rad(90), 0.5),
            fontsize=15,
            rotation=90)

似乎x和y是正确的,但旋转Angular 不是。理论上,顺时针和逆时针之间的转换应该将θ转换为-θ,但显然在这里不起作用。我已经尝试了任何可能的转换,但似乎发生了一些奇怪的事情。
我错过了什么?

6rqinv9w

6rqinv9w1#

旋转Angular 将遵循与位置Angular 相反的方向,从90 °开始(在位置0处,您有一个90°的Angular )。此外,您可以使用angle % 180来避免文本颠倒:

import matplotlib.pyplot as plt
import numpy as np

angle = 135

fig = plt.figure(figsize=(6,6))
ax = fig.add_subplot(111, polar=True)
ax.set_theta_zero_location("N") # apply +90° rotation
ax.set_theta_direction(-1)      # set - before angle
ax.set_yticklabels("")
ax.annotate('test',
            xy=(np.deg2rad(angle), 0.5),
            fontsize=15,
            rotation=90-(angle % 180))

plt.show()

angle=135的输出:

相关问题