如何在Plotly Express中绘制堆叠数据点(X标记)的图表
在Plotly Express中绘制堆叠数据点(高尔顿板样式)
要实现你需要的每个X值对应堆叠的X标记点(类似高尔顿板的效果),px.histogram并不适用——它是用来统计区间频数的柱状图,无法展示单个数据点的堆叠。你可以通过以下步骤实现:
步骤1:为相同X值的点生成堆叠Y坐标
首先需要给每个Score分组内的观测值分配垂直方向的位置,确保同一Score的点在Y轴上依次排列:
import pandas as pd import plotly.express as px d = {'Name':['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'], 'Score':[1, 1.5, 4, 1.5, 1.5, 4, 2.5, 3, 2.5, 4]} df = pd.DataFrame(data=d) # 给每个Score分组内的点生成Y轴堆叠位置 df['Y'] = df.groupby('Score').cumcount() + 1
步骤2:用散点图绘制堆叠X标记
使用px.scatter绘制散点,将标记样式设为x,并基于生成的Y坐标实现堆叠:
fig = px.scatter( df, x='Score', y='Y', marker='x', # 设置标记为X形状 color='Score', # 按Score区分颜色(可选) size_max=25 # 调整标记大小 ) # 优化布局,隐藏Y轴刻度(仅作为堆叠位置,无实际意义) fig.update_layout( title='堆叠数据点示例', yaxis=dict(showticklabels=False, title=''), xaxis_title='Score' ) fig.show()
效果说明
- 同一
Score的点会在垂直方向依次堆叠,比如Score=1.5会显示3个X标记,Score=4也会显示3个,和你草图的需求一致。 - 通过
groupby('Score').cumcount()自动生成每个分组内的序号,确保堆叠顺序正确。 - 隐藏Y轴刻度后,图表会更接近高尔顿板的视觉效果。
内容的提问来源于stack exchange,提问作者eschares
相关产品推荐
相关产品推荐

