Matplotlib:在极坐标图刻度标签上添加填充/偏移

15

有没有办法增加极坐标图刻度标签(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()
我希望极坐标图的θ刻度标签能够距离图表更远,以免重叠。

enter image description here

2个回答

12

首先,由于您已经将figsize指定为(2,2),并且让ax>占据了80%的宽度和高度,因此您留下的区域非常少,无法给刻度标签填充足够的空间。这可能会导致刻度标签在图形边缘处被“截断”。可以通过以下方式轻松“解决”这个问题:

  • 指定更大的figsize
  • 使ax在(2,2)大小的图中占用更少的空间
  • 使用较小的字体大小来显示刻度标签

或者任何这些方法的组合。我认为,另一个更好的解决方案是使用子图而不是指定Axes的边界;

ax = fig.add_subplot(111, polar=True, axisbg='#d5de9c')

这使得可以使用tight_layout()方法,该方法会自动配置图形布局以包含所有元素。

接下来是实际问题: 内边距。在PolarAxes上,可以通过将极坐标轴半径的一部分作为frac参数的值来设置theta刻度线的径向放置。这可以通过PolarAxesset_thetagrids()方法来完成。参数应该是一个小数,表示ticklabels所在的轴半径的一部分。例如,对于frac < 1,ticklabels将位于轴内部,而对于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()

PolarAxes with frac=1.3

您应该尝试不同的frac值,以找到最适合您需求的值。

如果您不像上面那样指定参数frac的值,即frac的默认值为None,则代码会输出如下的图表。请注意,由于刻度标签不会像上面的例子中“占用太多空间”,因此图表的半径更大。

PolarAxes with frac=None


你知道默认的 frac 是什么吗? - AnnanFay
5
ж №жҚ®иҝҷйҮҢзҡ„еҶ…е®№пјҢдјјд№Һfracе·Іиў«ејғз”ЁгҖӮеӣ жӯӨпјҢдёҚеҶҚдҪҝз”Ё.PolarAxes.set_thetagridsдёӯзҡ„fracеҸӮж•°гҖӮеҲ»еәҰзәҝй—ҙи·қеҸҜд»ҘйҖҡиҝҮ.Axes.tick_paramsжҲ–.Axis.set_tick_paramsдёӯзҡ„padеҸӮж•°иҝӣиЎҢдҝ®ж”№гҖӮ - sodd
1
@Annan 但是为了回答你的问题,它以前是 1.1 - sodd
3
对于当前版本的matplotlib,以下内容适用:ax.xaxis.set_tick_params(pad=10) - AxxE

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接