如何在Power BI中使用Python视觉工具创建Plotly图表
问题描述
我正在使用Power BI的Python视觉工具,想要创建Plotly图表。目前可以用Seaborn和Matplotlib生成图表,但尝试Plotly时出现错误,图表会在Power BI外部的HTML窗口打开。以下是我使用的代码:
import pandas as pd import plotly.graph_objects as go # Import go for graph_objects # Create a scatter plot figure fig = go.Figure() # Add scatter trace fig.add_trace( go.Scatter( x=dataset['I_B'], y=dataset['I_C'], mode='markers', marker=dict(size=8, color='blue', opacity=0.7) ) ) # Customize the layout fig.update_layout( title="Scatter Plot of I_B vs. I_C", xaxis_title="I_B", yaxis_title="I_C", width=800, height=500, template="plotly_white" ) # Show the figure inline fig.show()
解决方案
Power BI的Python视觉工具不支持Plotly默认的fig.show()方法——这个方法会启动本地Web服务,在外部浏览器打开交互式HTML页面,这就是你看到图表跳出Power BI的原因。要让Plotly图表在Power BI内部显示,需要将其转换为静态图像输出,具体操作如下:
- 安装依赖库:在Power BI使用的Python环境中执行
pip install kaleido,这个库用于将Plotly图表转换为静态图片。 - 修改代码:替换原代码中的
fig.show()部分,改为将Plotly图表转为静态图像并通过Matplotlib渲染:
修改后的完整代码:
import pandas as pd import plotly.graph_objects as go import plotly.io as pio import matplotlib.pyplot as plt from io import BytesIO # 创建散点图 fig = go.Figure() # 添加散点轨迹 fig.add_trace( go.Scatter( x=dataset['I_B'], y=dataset['I_C'], mode='markers', marker=dict(size=8, color='blue', opacity=0.7) ) ) # 自定义布局 fig.update_layout( title="I_B vs I_C 散点图", xaxis_title="I_B", yaxis_title="I_C", width=800, height=500, template="plotly_white" ) # 将Plotly图表转为PNG并在Power BI中显示 img_bytes = pio.to_image(fig, format='png') img = plt.imread(BytesIO(img_bytes)) plt.imshow(img) plt.axis('off') # 隐藏多余坐标轴 plt.show()
这样修改后,图表会以静态图片的形式嵌入到Power BI的Python视觉组件中,不会再跳出外部窗口。
如果需要交互式Plotly图表,目前Power BI的Python视觉不支持该形式,可考虑使用Power BI原生可视化组件,或把Plotly图表发布到Web后嵌入Power BI。
内容的提问来源于stack exchange,提问作者JCV
相关产品推荐
相关产品推荐

