如何调整雷达图特征名称字体及图像尺寸以适配多特征展示
解决雷达图特征名称完整显示的问题
针对特征数量多导致名称无法完整显示的问题,可以通过以下几个调整来解决:
- 增大图像整体尺寸:通过
plt.figure()设置更大的画布尺寸,给特征标签留出足够空间 - 精准控制标签字体大小:直接在
plt.xticks()中指定字体大小,比全局设置更灵活 - 长名称自动换行:对过长的特征名称添加换行符
\n,拆分显示避免重叠 - 调整标签旋转角度:让标签文字随极坐标角度旋转,进一步优化显示效果
修改后的完整代码如下:
# Libraries import matplotlib.pyplot as plt import pandas as pd from math import pi # Set data df = pd.DataFrame({ 'group': ['News','Response'], 'user/favourites_count': [.73,5.75], 'name_length_in_char': [.32,4.27], 'user/followers_count': [13.82 ,4], 'screen_name_length_in_char': [.64,3.31], 'user/friends_count': [.84, 2.14], 'user/description_length_in_char': [1.1, 1.83], 'user/geo_enabled': [.29,1.6], 'user/listed_count': [11.35,.95], 'reply_count': [9.43,1.44], 'reputation_score': [4.34,1.31], 'user_effect': [4.42,1.2], 'user_engagment': [2,.83], 'favorite_count': [2.24,.81], 'user/statuses_count': [2.51,.75], 'user/media_count': [7.18 ,0.056], 'user/verified': [8.73, 0.03], 'user_url_statues': [9.52, 3.4], 'user_describtion_statues': [1.1, 3.6], }) # ------- PART 1: Create background # 对长特征名称进行换行处理 categories = [ 'user/favourites\ncount', 'name_length_in\nchar', 'user/followers\ncount', 'screen_name_length_in\nchar', 'user/friends\ncount', 'user/description_length_in\nchar', 'user/geo_enabled', 'user/listed\ncount', 'reply_count', 'reputation_score', 'user_effect', 'user_engagment', 'favorite_count', 'user/statuses\ncount', 'user/media\ncount', 'user/verified', 'user_url_statues', 'user_describtion_statues' ] N = len(categories) # 增大图像尺寸 plt.figure(figsize=(12, 12)) # 计算每个轴的角度 angles = [n / float(N) * 2 * pi for n in range(N)] angles += angles[:1] # 初始化雷达图 ax = plt.subplot(111, polar=True) # 设置第一个轴在顶部 ax.set_theta_offset(pi / 2) ax.set_theta_direction(-1) # 绘制坐标轴并添加标签,设置字体大小并旋转标签 plt.xticks(angles[:-1], categories, fontsize=8, rotation=0) # 让标签随极坐标角度自动旋转,避免重叠 for label, angle in zip(ax.get_xticklabels(), angles[:-1]): label.set_rotation(angle * 180/pi - 90) # 绘制径向刻度标签 ax.set_rlabel_position(0) plt.yticks([5,10,15], ["5","10","15"], color="grey", size=8) plt.ylim(0,14) # ------- PART 2: 添加数据曲线 # 绘制News组数据 values=df.loc[0].drop('group').values.flatten().tolist() values += values[:1] ax.plot(angles, values, linewidth=2, linestyle='solid', label="News") ax.fill(angles, values, 'b', alpha=0.1) # 绘制Response组数据 values=df.loc[1].drop('group').values.flatten().tolist() values += values[:1] ax.plot(angles, values, linewidth=2, linestyle='solid', label="Response") ax.fill(angles, values, 'r', alpha=0.1) # 添加图例 plt.legend(loc='upper right', bbox_to_anchor=(0.1, 0.1), fontsize=10) # 显示图像 plt.show()
关键修改说明:
- 用
plt.figure(figsize=(12,12))将画布尺寸调大,给标签提供更多显示空间 - 手动拆分长特征名称为多行,避免单行长文本溢出
- 在
plt.xticks()中直接设置字体大小,精准控制标签显示效果 - 添加标签旋转逻辑,让文字随极坐标角度适配,减少重叠
- 修正了径向刻度值,使其匹配数据范围(原刻度15超出设置的
ylim(0,14))
内容的提问来源于stack exchange,提问作者Hiss
相关产品推荐
相关产品推荐

