Matplotlib 注释在极坐标图上不合适
Matplotlib annotations are out of place on polar graph
我正在尝试在极坐标投影的 matplotlib ax 对象上添加一些注释。大多数注释都很长(40 +/- 3 个字符)。
有没有办法在极投影上更好地控制这些较长的注释?更多的控制,我的意思是更接近直线。
# This annotation works alright
fig = plt.figure()
ax = plt.subplot(111, projection="polar")
ax.axvline(x=np.pi/3, color="black", alpha=0.618)
ax.annotate("this ok", xy=[np.pi/3,0.75], rotation=np.rad2deg(np.pi/3))
# This one doesn't work
fig = plt.figure()
ax = plt.subplot(111, projection="polar")
ax.axvline(x=np.pi/3, color="black", alpha=0.618)
ax.annotate("this doesn't work b/c it's pretty long", xy=[np.pi/3,0.75], rotation=np.rad2deg(np.pi/3))
尝试将字体大小设置得更小以适合
SIZE = 8
MED_SIZE = 10
BIG_SIZE = 12
plt.rc('axes',titlesize=SIZE) #fontsize of the axes titles is set to 8
问题是注释文本被旋转了。因此,围绕整个文本的矩形(称为边界框)的左上角远离文本。但是,这个左上角默认位于 ax.annotate()
的 xy
参数指定的坐标处。这可以在下面的左图中看到。
解决方法是改用周围矩形的左下角,将其移动到靠近原点的地方。可以通过指定 ha="left"
(水平对齐)、va="bottom"
.
来使用左下角
ax2.annotate("this does work b/c we specifiy alignment",
xy=[0,0.07], rotation=np.rad2deg(np.pi/3),
ha="left", va="bottom")
我正在尝试在极坐标投影的 matplotlib ax 对象上添加一些注释。大多数注释都很长(40 +/- 3 个字符)。
有没有办法在极投影上更好地控制这些较长的注释?更多的控制,我的意思是更接近直线。
# This annotation works alright
fig = plt.figure()
ax = plt.subplot(111, projection="polar")
ax.axvline(x=np.pi/3, color="black", alpha=0.618)
ax.annotate("this ok", xy=[np.pi/3,0.75], rotation=np.rad2deg(np.pi/3))
# This one doesn't work
fig = plt.figure()
ax = plt.subplot(111, projection="polar")
ax.axvline(x=np.pi/3, color="black", alpha=0.618)
ax.annotate("this doesn't work b/c it's pretty long", xy=[np.pi/3,0.75], rotation=np.rad2deg(np.pi/3))
尝试将字体大小设置得更小以适合
SIZE = 8
MED_SIZE = 10
BIG_SIZE = 12
plt.rc('axes',titlesize=SIZE) #fontsize of the axes titles is set to 8
问题是注释文本被旋转了。因此,围绕整个文本的矩形(称为边界框)的左上角远离文本。但是,这个左上角默认位于 ax.annotate()
的 xy
参数指定的坐标处。这可以在下面的左图中看到。
解决方法是改用周围矩形的左下角,将其移动到靠近原点的地方。可以通过指定 ha="left"
(水平对齐)、va="bottom"
.
ax2.annotate("this does work b/c we specifiy alignment",
xy=[0,0.07], rotation=np.rad2deg(np.pi/3),
ha="left", va="bottom")