Plotly旭日图设置insidetextorientation='radial'时标签错位如何修复
R Plotly旭日图radial文本方向标签错位问题
使用R语言Plotly包绘制旭日图(sunburst)时,即便绘制结构非常简单的图表,设置参数insidetextorientation = 'radial'后也会出现部分标签严重偏移错位的问题。
问题复现
复现代码如下:
library(plotly) my_labels <- c("A","B","C","AA","AB","AC","BA","BB","CA","CB","CC") my_parents <- c("","","","A","A","A","B","B","C","C","C") my_values <- c(15,23,7,3,5,7,6,17,1,2,4) plot_ly(labels = my_labels,parents = my_parents,values = my_values,type = 'sunburst', branchvalues = 'total',insidetextorientation = 'radial')
运行效果:
从运行效果可以看到,左侧的"B"和"BA"标签存在明显错位。放大任意父级扇区时也会触发同类问题,若将参数修改为insidetextorientation = 'auto',该异常就不会出现。
修复方案
- 方案1:升级Plotly包至最新版本,手动指定固定文本字号,不要使用默认自适应字号,可大幅降低错位出现概率,调整后代码如下:
plot_ly(labels = my_labels,parents = my_parents,values = my_values,type = 'sunburst', branchvalues = 'total',insidetextorientation = 'radial', textfont = list(size = 12))
- 方案2:如果没有强制要求文本必须径向排布,直接设置
insidetextorientation = 'auto'即可完全规避错位问题,Plotly会自动根据每个扇区的角度选择可读性最好的文本排布方向。 - 方案3:若上述方案仍无法解决,可适当调整画布宽高比、微调各扇区的数值占比,避开文本坐标计算的临界角度即可消除错位。
该问题本质是Plotly底层渲染逻辑的已知bug,触发场景为扇区角度接近垂直方向边界时的文本坐标计算偏差,目前最新版本已覆盖绝大多数常规使用场景的修复。
内容的提问来源于stack exchange,提问作者king_of_limes
相关产品推荐
相关产品推荐

