You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整雷达图特征名称字体及图像尺寸以适配多特征展示

解决雷达图特征名称完整显示的问题

针对特征数量多导致名称无法完整显示的问题,可以通过以下几个调整来解决:

  • 增大图像整体尺寸:通过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()

关键修改说明:

  1. 用plt.figure(figsize=(12,12))将画布尺寸调大,给标签提供更多显示空间
  2. 手动拆分长特征名称为多行,避免单行长文本溢出
  3. 在plt.xticks()中直接设置字体大小,精准控制标签显示效果
  4. 添加标签旋转逻辑,让文字随极坐标角度适配,减少重叠
  5. 修正了径向刻度值,使其匹配数据范围(原刻度15超出设置的ylim(0,14))

内容的提问来源于stack exchange,提问作者Hiss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 17:10:33