如何在Makie中让PolarAxis轴标签更贴近并移除冗余空白区域?
解决Makie PolarAxis自定义轴标签的布局问题
问题对应解决方法
1. 干掉PolarAxis周围的额外空白
PolarAxis默认会预留完整极坐标圆的空间,再加上默认padding,就会出现多余空白。直接改这几个参数:
padding=(0,0,0,0):消除轴内部的填充空间tight=true:让轴的边界紧紧贴合你的三角极区范围- 如果蓝色高亮是spine边框的话,加个
spinevisible=false隐藏掉
2. 不让标签被粉色极区挡住
缩小dummy轴后标签被遮挡,是因为PolarAxis绘制层级在dummy轴之上。只要用raise!(dummy)把带标签的dummy轴提到上层,标签就不会被挡住了。另外给dummy轴加个backgroundcolor=:transparent,避免它的背景盖掉PolarAxis的内容。
3. 去掉绿色外部区域
绿色是Figure的默认背景色,直接在创建Figure时设置backgroundcolor=:white就能换掉。
修改后的完整代码:
begin using CairoMakie using GeometryBasics: Point2f # 设置白色背景,移除绿色区域 f = Figure(size = (500, 300), backgroundcolor=:white) gl = f[1, 1] = GridLayout() rmax = 2.0 θmin, θmax = -π/5, π/5 pax = PolarAxis( gl[1, 1]; width = 220, height = 180, thetalimits = (θmin, θmax), theta_0 = π/2, thetaticklabelsize = 12, rticklabelsize = 12, backgroundcolor = :pink, # 消除内部填充,紧密贴合极区 padding=(0,0,0,0), tight=true, # 隐藏spine,去掉蓝色高亮边框 spinevisible=false, # 移除轴外部的背景色残留 outer_backgroundcolor=:white ) tri_pts = Point2f[ Point2f(0.0, 0.0), Point2f(θmin, rmax), Point2f(θmax, rmax), ] rlims!(pax, 0, rmax) dummy = Axis( gl[1, 1]; width = 200, height = 180, xlabel = "Voltage [µV]",ylabel = "SE", # 透明背景,不遮挡PolarAxis backgroundcolor=:transparent ) hidedecorations!(dummy, label = false); hidespines!(dummy) # 把dummy轴提到上层,确保标签可见 raise!(dummy) f end
内容的提问来源于stack exchange,提问作者Vladimir Mikheev
相关产品推荐
相关产品推荐

