有没有办法增加极坐标刻度标签(theta)的填充/偏移?
import matplotlib
import numpy as np
from matplotlib.pyplot import figure, show, grid
# make a square figure
fig = figure(figsize=(2, 2))
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8], polar=True, axisbg='#d5de9c')
ax.set_yticklabels([])
r = np.arange(0, 3.0, 0.01)
theta = 2*np.pi*r
ax.plot(theta, r, color='#ee8d18', lw=3)
ax.set_rmax(2.0)
show()
我希望将theta tick标签远离极坐标图,这样它们就不会重叠。
答案 0 :(得分:12)
首先;看到你如何指定figsize
为(2,2)并让ax
占据宽度和高度的80%,你就会留下非常小的空间填写标签。这可能导致蜱标签在图的egdes处被“切断”。
figsize
ax
在(2,2)大小的数字上占用更少的空间或这些的任何组合。另外,在我看来更好的解决这个“问题”的方法是使用子图而不是指定Axes
的边界;
ax = fig.add_subplot(111, polar=True, axisbg='#d5de9c')
因为这样可以使用自动配置图形布局的方法tight_layout()
来很好地包含所有元素。
然后解决手头的真正问题;填充。在PolarAxes
上,您可以设置theta-ticks的径向放置等。这是通过指定极坐标轴半径的分数来完成的,您希望将标记标记放置为frac
的{{3}}方法的PolarAxes
参数的参数。参数应该是您想要放置标记标签的轴半径的一小部分。即for frac
< 1,勾选标签将放置在轴内,而对于frac
> 1它们将被放置在轴外。
您的代码可能是这样的:
import numpy as np
from matplotlib.pyplot import figure, show, grid, tight_layout
# make a square figure
fig = figure(figsize=(2, 2))
ax = fig.add_subplot(111, polar=True, axisbg='#d5de9c')
ax.set_yticklabels([])
r = np.arange(0, 3.0, 0.01)
theta = 2*np.pi*r
ax.plot(theta, r, color='#ee8d18', lw=3)
ax.set_rmax(2.0)
# tick locations
thetaticks = np.arange(0,360,45)
# set ticklabels location at 1.3 times the axes' radius
ax.set_thetagrids(thetaticks, frac=1.3)
tight_layout()
show()
您应该为frac
尝试不同的值,以找到最适合您需求的值。
如果您未如上所述为参数frac
指定值,即frac
具有默认值None
,则代码将输出如下图。注意绘图的半径是如何更大的,因为刻度标签不像上面的例子那样“占用太多空间”。