r 的对数刻度径向图的刻度放置
Tick placement for radial plot with log-scale for r
我正在尝试创建一个在 r 轴上具有对数刻度的径向图,但是 theta 的刻度标签出现在图中。
import numpy as np
from matplotlib import pyplot as plt
np.random.seed(1)
r = 10**(1 + 2*np.random.rand(36))
theta = 2 * np.pi * np.linspace(0, 1, 37)
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(theta, r)
# We need to reset the minimum r-limit to avoid log(0)
ax.set_rlim(0.1, None)
ax.set_rscale('log')
plt.show()
theta 刻度在图中,在这里看起来还不错,但是隐藏起来了,例如。 pcolormesh 图 - 为了进行比较,如果我注释掉 set_rlim
和 set_rscale
行,我们将得到以下内容以及刻度所需的位置。 (对于使用深色模式的任何人,图像背景是透明的,因此刻度线可能不会显示为内联。)
我试过查看 ax.get_xticklabels
但 y 位置(相当于 r 位置)为 0。
[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°')]
有趣的是,如果您创建上部 rlim
(例如 ax.set_rlim([0.1, 1e5])
),刻度会向右移动到图形的边缘。
您可以使用Axes.tick_params()
设置刻度和标签之间的pad
距离:
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(theta, r)
ax.set_rmin(0.1)
ax.set_rscale('log')
ax.tick_params(pad=35)
我正在尝试创建一个在 r 轴上具有对数刻度的径向图,但是 theta 的刻度标签出现在图中。
import numpy as np
from matplotlib import pyplot as plt
np.random.seed(1)
r = 10**(1 + 2*np.random.rand(36))
theta = 2 * np.pi * np.linspace(0, 1, 37)
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(theta, r)
# We need to reset the minimum r-limit to avoid log(0)
ax.set_rlim(0.1, None)
ax.set_rscale('log')
plt.show()
theta 刻度在图中,在这里看起来还不错,但是隐藏起来了,例如。 pcolormesh 图 - 为了进行比较,如果我注释掉 set_rlim
和 set_rscale
行,我们将得到以下内容以及刻度所需的位置。 (对于使用深色模式的任何人,图像背景是透明的,因此刻度线可能不会显示为内联。)
我试过查看 ax.get_xticklabels
但 y 位置(相当于 r 位置)为 0。
[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°')]
有趣的是,如果您创建上部 rlim
(例如 ax.set_rlim([0.1, 1e5])
),刻度会向右移动到图形的边缘。
您可以使用Axes.tick_params()
设置刻度和标签之间的pad
距离:
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(theta, r)
ax.set_rmin(0.1)
ax.set_rscale('log')
ax.tick_params(pad=35)