如何在Power BI Python视觉对象中添加(0,0)常量线、公差线及动态按钮
在Power BI中用Python视觉对象制作带动态公差线的散点图
一、修正并导入示例数据
你提供的Python生成数据代码存在拼写错误(np.arrange应为np.arange),修正后可在Power BI的Power Query编辑器中生成数据:
- 进入Power Query编辑器 → 点击「转换」选项卡 → 「运行Python脚本」
- 粘贴以下代码并运行:
import numpy as np import pandas as pd np.random.seed(10) x = np.arange(0,100) y = np.random.randint(0,100,100) # 转为DataFrame供Power BI识别 df = pd.DataFrame({'x':x, 'y':y})
- 关闭编辑器并加载数据到Power BI模型。
二、创建基础视觉对象(含基准线与固定公差线)
- 在画布中添加Python视觉对象,勾选字段列表中的
x和y。 - 替换默认的Python脚本为以下代码,实现散点图、(0,0)基准线和初始公差线(以10为例):
import matplotlib.pyplot as plt import pandas as pd # 获取Power BI传入的数据集 df = dataset # 初始化画布 fig, ax = plt.subplots(figsize=(8,6)) # 绘制散点图 ax.scatter(df['x'], df['y'], alpha=0.6, color='#1f77b4', label='数据点') # 绘制从(0,0)出发的基准线(y=x) ax.plot([0, df['x'].max()], [0, df['y'].max()], color='#ff7f0e', linestyle='--', linewidth=2, label='基准线') # 初始公差值 tolerance = 10 # 绘制X轴方向公差线(水平) ax.axhline(y=tolerance, color='#2ca02c', linestyle=':', linewidth=2, label=f'Y公差线({tolerance})') # 绘制Y轴方向公差线(垂直) ax.axvline(x=tolerance, color='#d62728', linestyle=':', linewidth=2, label=f'X公差线({tolerance})') # 图表样式设置 ax.set_xlabel('X轴', fontsize=12) ax.set_ylabel('Y轴', fontsize=12) ax.legend(fontsize=10) ax.grid(True, alpha=0.3) # 显示图表 plt.show()
运行后就能看到包含散点、基准线和固定公差线的图表。
三、添加动态公差调整按钮
通过Power BI参数实现公差值的动态调整:
- 创建参数:点击「建模」选项卡 → 「新建参数」,设置如下:
- 参数类型:整数
- 最小值:0
- 最大值:100
- 默认值:10
- 参数名称:公差值
- 勾选「添加切片器」,生成可调的数值按钮
- 将「公差值」参数添加到Python视觉对象的字段列表中
- 修改Python脚本,替换固定公差值为动态参数值:
import matplotlib.pyplot as plt import pandas as pd df = dataset # 提取参数值(参数会在每行重复,取第一个值即可) tolerance = df['公差值'].iloc[0] fig, ax = plt.subplots(figsize=(8,6)) ax.scatter(df['x'], df['y'], alpha=0.6, color='#1f77b4', label='数据点') ax.plot([0, df['x'].max()], [0, df['y'].max()], color='#ff7f0e', linestyle='--', linewidth=2, label='基准线') # 动态公差线 ax.axhline(y=tolerance, color='#2ca02c', linestyle=':', linewidth=2, label=f'Y公差线({tolerance})') ax.axvline(x=tolerance, color='#d62728', linestyle=':', linewidth=2, label=f'X公差线({tolerance})') ax.set_xlabel('X轴', fontsize=12) ax.set_ylabel('Y轴', fontsize=12) ax.legend(fontsize=10) ax.grid(True, alpha=0.3) plt.show()
现在调整切片器的数值,图表中的两条公差线会自动对应更新位置。
注意事项
- 确保本地已安装
matplotlib和pandas库,Power BI会调用本地Python环境 - 若数据范围不是0-100,可修改基准线的端点为
df['x'].max()和df['y'].max()以适配数据
内容的提问来源于stack exchange,提问作者ukanafun
相关产品推荐
相关产品推荐

