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

如何创建各分支独立缩放的KPI蜘蛛图(Power BI/Python实现)

实现独立分支缩放的KPI对比蜘蛛图方案

Power BI 实现路径

方法1:嵌入Python自定义雷达图

  1. 数据准备:确保数据集包含KPI名称、当期绩效、目标值、往期绩效字段
  2. 在Power BI中添加Python视觉,导入库并运行以下代码,自动按每个KPI的目标值作为分支最大值实现独立缩放
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# 获取Power BI传入的数据
df = dataset

# 提取KPI及对应数值
categories = df['KPI名称'].tolist()
current = df['当期绩效'].tolist()
target = df['目标值'].tolist()
previous = df['往期绩效'].tolist()

# 设置雷达图角度
N = len(categories)
angles = [n / float(N) * 2 * np.pi for n in range(N)]
angles += angles[:1]

# 闭合数据
current += current[:1]
target += target[:1]
previous += previous[:1]

# 创建画布
fig, ax = plt.subplots(figsize=(8, 8), subplot_kw={'projection': 'polar'})

# 绘制对比线条
ax.plot(angles, current, 'o-', linewidth=2, label='当期绩效')
ax.plot(angles, target, 'o-', linewidth=2, label='目标值')
ax.plot(angles, previous, 'o-', linewidth=2, label='往期绩效')

# 关键:为每个分支设置独立刻度范围
for i in range(N):
    max_val = max(target[i], current[i], previous[i]) * 1.1
    ax.set_ylim(i, 0, max_val)

# 配置标签与图例
ax.set_xticks(angles[:-1])
ax.set_xticklabels(categories)
ax.legend(loc='upper right', bbox_to_anchor=(0.1, 0.1))
plt.title('KPI绩效对比蜘蛛图', y=1.1)

plt.show()

方法2:第三方自定义视觉

前往Power BI视觉市场搜索支持独立轴缩放的雷达图工具,导入后绑定对应字段,在格式面板中开启独立缩放配置即可。

Python 独立实现方案

Matplotlib 静态蜘蛛图

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# 模拟数据集
data = {
    'KPI名称': ['销售额', '客户留存率', '转化率', '客单价'],
    '当期绩效': [85000, 78, 22, 120],
    '目标值': [100000, 85, 25, 150],
    '往期绩效': [75000, 72, 18, 105]
}
df = pd.DataFrame(data)

categories = df['KPI名称'].tolist()
current = df['当期绩效'].tolist()
target = df['目标值'].tolist()
previous = df['往期绩效'].tolist()

N = len(categories)
angles = np.linspace(0, 2*np.pi, N, endpoint=False)
angles = np.concatenate((angles, [angles[0]]))

# 闭合数据
current = np.concatenate((current, [current[0]]))
target = np.concatenate((target, [target[0]]))
previous = np.concatenate((previous, [previous[0]]))

# 创建画布
fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(111, polar=True)

# 绘制对比线条
ax.plot(angles, current, 'b-', marker='o', label='当期绩效')
ax.plot(angles, target, 'r-', marker='s', label='目标值')
ax.plot(angles, previous, 'g-', marker='^', label='往期绩效')

# 设置独立分支刻度范围
for i in range(N):
    max_val = max(target[i], current[i], previous[i]) * 1.1
    ax.set_ylim(i, 0, max_val)

# 配置标签与图例
ax.set_xticks(angles[:-1])
ax.set_xticklabels(categories)
ax.legend(loc='upper right', bbox_to_anchor=(1.3, 1.0))
plt.title('KPI多维度绩效对比', pad=30)

plt.show()

Plotly 交互式蜘蛛图

import plotly.graph_objects as go
import pandas as pd

# 模拟数据集
data = {
    'KPI名称': ['销售额', '客户留存率', '转化率', '客单价'],
    '当期绩效': [85000, 78, 22, 120],
    '目标值': [100000, 85, 25, 150],
    '往期绩效': [75000, 72, 18, 105]
}
df = pd.DataFrame(data)

categories = df['KPI名称'].tolist()

fig = go.Figure()

# 添加对比轨迹
fig.add_trace(go.Scatterpolar(
    r=df['当期绩效'].tolist() + [df['当期绩效'][0]],
    theta=categories + [categories[0]],
    name='当期绩效',
    line=dict(color='blue')
))
fig.add_trace(go.Scatterpolar(
    r=df['目标值'].tolist() + [df['目标值'][0]],
    theta=categories + [categories[0]],
    name='目标值',
    line=dict(color='red')
))
fig.add_trace(go.Scatterpolar(
    r=df['往期绩效'].tolist() + [df['往期绩效'][0]],
    theta=categories + [categories[0]],
    name='往期绩效',
    line=dict(color='green')
))

# 配置交互式布局
fig.update_layout(
    polar=dict(
        radialaxis=dict(
            visible=True,
            range=[0, max(df['目标值'].tolist())*1.1]
        )
    ),
    showlegend=True,
    title='交互式KPI绩效对比蜘蛛图'
)

fig.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:10:33