如何调整R Shiny中fmsb包雷达图(蜘蛛图)标签位置避免重叠
解决方案
你出现的标签重叠问题是因为错误使用了paxislabels参数(该参数用于定义雷达图轴刻度的显示数值,并非调整标签位置),同时默认绘图边距不足导致水平方向标签被挤压到图表内部,有两种修复方式:
方案1:仅调整参数,改动最小
修改你renderPlot内的代码如下,先调整全局绘图边距,删除错误的paxislabels参数即可:
output$spider_chart <- renderPlot({ req(input$submit) colors_border=rgb(.5, 0, .5, .9) colors_in=rgb(.5, 0, .5, .5) # 调整绘图边距,四个值依次对应下、左、上、右的边距宽度,可自行调整大小 par(mar = c(6, 6, 6, 6)) radarchart(data_scores(), pcol= colors_border, pfcol=colors_in , plwd=4 , plty=1, cglcol="grey", cglty=1, axislabcol="grey",cglwd=0.8, vlcex= 1.2 ) })
par(mar)的数值越大,绘图四周的留白越多,标签就会越靠外,不会和图表重叠。
方案2:手动控制标签位置,适配性更强
如果需要对每个标签的位置做单独微调,可以先关闭默认的标签显示,再用text函数手动添加标签:
output$spider_chart <- renderPlot({ req(input$submit) colors_border=rgb(.5, 0, .5, .9) colors_in=rgb(.5, 0, .5, .5) par(mar = c(6, 6, 6, 6)) radarchart(data_scores(), pcol= colors_border, pfcol=colors_in , plwd=4 , plty=1, cglcol="grey", cglty=1, axislabcol="grey",cglwd=0.8, # 关闭默认标签显示 vlabels = NA ) # 手动添加标签,x、y参数控制标签位置,可根据需要自行调整数值 text( x = c(-1.4, 0, 1.4, 0), y = c(0, 1.4, 0, -1.4), labels = c("Variable 1", "Variable 2", "Variable 3", "Variable 4"), cex = 1.2 ) })
四个标签的位置可以分别通过修改x、y向量内对应位置的数值调整。
内容的提问来源于stack exchange,提问作者J.Sabree
相关产品推荐
相关产品推荐

