南丁格尔玫瑰图(Nightingale rose chart)可视化内容重叠问题求解
解决南丁格尔玫瑰图分类内容重叠的方案
以下是几种实用的调整方法,直接修改代码即可解决重叠问题:
1. 放大图表尺寸,增加展示空间
原图表的figsize=(4,4)过小,导致标签和元素挤在一起,放大尺寸能直接缓解重叠:
fig = plt.figure(figsize=(6, 6), dpi=180) # 将尺寸从(4,4)调整为(6,6)或更大
2. 调整分类标签的位置与样式
通过增加标签内边距、缩小字体或添加旋转角度,让标签错开:
# 增加pad参数将标签移至更外侧,同时缩小字体 plt.xticks(angle, labels=mydata.model, size=7, pad=15) # 若标签文字较长,可添加旋转角度进一步避免重叠 plt.xticks(angle, labels=mydata.model, size=7, pad=15, rotation=15)
3. 减小柱子宽度,增加空隙
原柱子宽度width=0.90过大,缩小宽度能让柱子间的空间更充足:
bars = ax.bar(angle, radius, color=all_color, edgecolor="k", width=0.7, alpha=0.9) # 将宽度从0.9调整为0.7
4. 调整柱子上数值文本的位置
如果是柱子顶部的数值与其他元素重叠,可给文本添加向外偏移量:
for bar in bars: height = bar.get_height() # 给数值文本增加向外偏移,避免和柱子、标签重叠 ax.text(bar.get_x() + bar.get_width()/2.0, height + 2, f'{height:.1f}', ha='center', va='bottom')
5. 修正代码中的未定义变量
原代码里cmap=cm.get_cmap('Reds', n_col)的n_col未定义,会导致报错,需改为n_row:
cmap=cm.get_cmap('Reds', n_row)
内容的提问来源于stack exchange,提问作者Jiayue Qiu
相关产品推荐
相关产品推荐

