Plotly Express:如何调整边际分布图的尺寸?
调整Plotly Express边际直方图尺寸的方法
Plotly Express的边际分布图本质是通过子图(subplot)实现的,你可以通过修改子图的域(domain)参数来缩小边际图的占比,避免遮挡主图数据点。以下是具体实现步骤:
步骤1:创建基础散点图(带边际直方图)
先完成基础的绘图代码:
import plotly.express as px # 用鸢尾花数据集做示例 df = px.data.iris() # 创建带x、y轴边际直方图的散点图 fig = px.scatter(df, x="sepal_width", y="sepal_length", marginal_x="histogram", marginal_y="histogram")
步骤2:调整边际图的尺寸占比
通过update_layout()修改对应子图的domain参数,控制主图和边际图的空间分配:
fig.update_layout( # 主图y轴域:占据底部85%的高度,顶部15%留给x轴边际直方图 yaxis=dict(domain=[0, 0.85]), # x轴边际直方图的y轴域:占据顶部15% yaxis2=dict(domain=[0.85, 1]), # 主图x轴域:占据左侧85%的宽度,右侧15%留给y轴边际直方图 xaxis=dict(domain=[0, 0.85]), # y轴边际直方图的x轴域:占据右侧15% xaxis2=dict(domain=[0.85, 1]) ) fig.show()
你可以根据实际需求调整domain里的数值(比如把0.85改成0.9,让边际图占比更小),直到主图数据点完全清晰可见。
额外优化:调整直方图细节(可选)
如果想进一步让边际图更紧凑,还可以调整直方图的柱子间距或分箱数:
# 调整顶部边际直方图的分箱数和柱子间距 fig.update_traces(selector=dict(type='histogram', yaxis='y2'), nbinsx=20, marker=dict(line=dict(width=0))) # 调整右侧边际直方图的分箱数和柱子间距 fig.update_traces(selector=dict(type='histogram', xaxis='x2'), nbinsy=20, marker=dict(line=dict(width=0)))
内容的提问来源于stack exchange,提问作者lpnorm
相关产品推荐
相关产品推荐

