在PowerBI中将散点图转换为密度热力图的实现方法
解决方案
一、PowerBI内置实现方式
- 若你的散点数据为地理经纬度坐标,可直接使用PowerBI自带的「地图」视觉对象:
- 将经纬度字段分别拖入「纬度」「经度」区域
- 在格式面板中切换为「热力图」类型,调整半径、透明度等参数,即可生成类似参考图的密度热力效果
- 若为非地理坐标的笛卡尔散点,PowerBI原生无对应视觉对象,但可通过自定义视觉实现:在PowerBI Marketplace搜索「Density Heatmap」,安装后导入数据即可生成笛卡尔坐标系下的密度热力图
二、R脚本方案(PowerBI中调用)
- 准备包含X、Y轴数据的数据集,字段名示例为
x和y - 在PowerBI中选择「R脚本视觉对象」,将
x和y字段拖入「值」区域 - 替换默认脚本为以下代码:
# 加载依赖库 library(ggplot2) # 读取PowerBI传入的数据集 dataset <- dataset # 生成密度热力图 ggplot(dataset, aes(x = x, y = y)) + stat_density_2d(aes(fill = after_stat(density)), geom = "raster", contour = FALSE) + scale_fill_viridis_c(option = "plasma") + theme_minimal() + labs(x = "X轴", y = "Y轴", fill = "密度")
- 运行脚本即可生成热力图,可通过调整
stat_density_2d的h参数(控制带宽)优化密度显示效果
三、Python脚本方案(PowerBI中调用)
- 准备包含
x、y字段的数据集 - 在PowerBI中选择「Python脚本视觉对象」,将
x和y字段拖入「值」区域 - 替换默认脚本为以下代码:
import seaborn as sns import matplotlib.pyplot as plt import pandas as pd # 读取PowerBI传入的数据 df = dataset # 设置绘图风格 sns.set_style("white") # 生成密度热力图 plt.figure(figsize=(10,6)) sns.kdeplot(data=df, x='x', y='y', fill=True, cmap="plasma", thresh=0, levels=100) plt.xlabel('X轴') plt.ylabel('Y轴') plt.title('密度热力图') plt.show()
- 运行脚本后即可得到目标热力图,可调整
kdeplot的levels(等高线层数)、cmap(配色方案)等参数优化显示效果
内容的提问来源于stack exchange,提问作者Kaikus
相关产品推荐
相关产品推荐

