Python 带对数刻度的r射线图的记号位置

Python 带对数刻度的r射线图的记号位置,python,matplotlib,scale,Python,Matplotlib,Scale,我试图在r轴上创建一个带有对数刻度的径向图,但是θ的刻度标签出现在图中 将numpy导入为np 从matplotlib导入pyplot作为plt np.随机种子(1) r=10**(1+2*np.rand.rand(36)) θ=2*np.pi*np.linspace(0,1,37) 图,ax=plt.子地块(子地块_kw={'projection':'polar'}) 轴图(θ,r) #我们需要重置最小r限制以避免日志(0) 最大设定值(0.1,无) ax.set\u rscale('log'

我试图在r轴上创建一个带有对数刻度的径向图,但是θ的刻度标签出现在图中

将numpy导入为np
从matplotlib导入pyplot作为plt
np.随机种子(1)
r=10**(1+2*np.rand.rand(36))
θ=2*np.pi*np.linspace(0,1,37)
图,ax=plt.子地块(子地块_kw={'projection':'polar'})
轴图(θ,r)
#我们需要重置最小r限制以避免日志(0)
最大设定值(0.1,无)
ax.set\u rscale('log')
plt.show()

θ刻度在图中,图中看起来不太糟糕,但隐藏在图中,例如pcolormesh图-为了比较,如果我注释掉
set_rlim
set_rscale
行,我们会得到以下刻度所需位置。(对于使用暗模式的任何人,图像背景是透明的,因此记号可能不会显示为内联。)

我试过查看ax.getxticklabels,但是y位置(相当于r位置)是0

有趣的是,如果您增加上方的
rlim
(例如
ax.set_rlim([0.1,1e5])
),则记号会向右移动到图形的边缘。

您可以使用设置记号和标签之间的
垫距离:

fig,ax=plt.subplot(subplot_kw={'projection':'polar'})
轴图(θ,r)
最大设定值(0.1)
ax.set\u rscale('log')
最大勾选参数(pad=35)

为此干杯。如果数据变高,例如,对于数据
r=10**(7+2*np.rand.rand(36))
35填充将需要减少。有没有想过不为每个情节手动设置此选项?@Steve抱歉,我不知道如何自动设置。我尝试了seaborn,因为它有时会修复matplotlib的格式问题,但是
set\u rscale('log')
也会将seaborn的刻度标签弄乱。可能与此问题有关:
[Text(0.0, 0, '0°'),
 Text(0.7853981633974483, 0, '45°'),
 Text(1.5707963267948966, 0, '90°'),
 Text(2.356194490192345, 0, '135°'),
 Text(3.141592653589793, 0, '180°'),
 Text(3.9269908169872414, 0, '225°'),
 Text(4.71238898038469, 0, '270°'),
 Text(5.497787143782138, 0, '315°')]