在Azure Databricks中为Plotly直方图添加分箱数控制滑块
在Azure Databricks中为Plotly直方图添加分箱数控制滑块
以下是实现交互式分箱数控制的完整代码,基于ipywidgets实现滑块与直方图的联动:
from pyspark.sql.functions import * from pyspark.sql.types import * import pandas as pd import plotly.express as px from ipywidgets import interact, IntSlider # 构建Spark DataFrame并转换为Pandas DataFrame data = [["1", "Amit", "DU", "I", "8", "6"], ["2", "Mohit", "DU", "I", "4", "2"], ["3", "rohith", "BHU", "I", "5", "3"], ["4", "sridevi", "LPU", "I", "1", "6"], ["1", "sravan", "KLMP", "M", "2", "4"], ["5", "gnanesh", "IIT", "M", "6", "8"], ["6", "gnadesh", "KLM", "c", "0", "9"]] columns = ['ID', 'NAME', 'college', 'metric', 'x', 'y'] dataframe = spark.createDataFrame(data, columns) dataframe = dataframe.withColumn("x", dataframe.x.cast(DoubleType())) data = dataframe.toPandas() # 定义更新直方图的函数 def update_histogram(nbins): fig = px.histogram(data_frame=data, x='x', nbins=nbins, text_auto=True) # 在Databricks中直接显示Plotly图表 display(fig) # 创建交互式滑块并绑定函数 interact( update_histogram, nbins=IntSlider(min=1, max=50, value=25, step=1, description='分箱数:') )
实现说明:
- ipywidgets集成:用
IntSlider创建分箱数控制滑块,设置了1到50的合理范围,初始值保留你原本的25 - 动态更新逻辑:
update_histogram函数接收滑块当前值,重新生成对应分箱数的直方图,通过Databricks的display方法渲染 - 环境适配:该方案完全兼容Azure Databricks,无需额外配置外部服务
替代方案说明:
如果偏好纯Plotly原生实现,也可通过dash库搭建交互式应用,但在Databricks中需开启Dash支持,步骤相对繁琐。上述ipywidgets方案是更轻量的选择。
内容的提问来源于stack exchange,提问作者Gaaaa
相关产品推荐
相关产品推荐

