You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Plotly Express中强制显示每个子图的X轴与Y轴

让Plotly分面直方图的每个子图显示独立X/Y轴

使用plotly.express.histogram()绘制带行分面(facet_row)和列分面(facet_col)的直方图时,希望每个子图都显示独立的X轴与Y轴以提升可读性,但默认生成的图表中仅边缘子图显示轴,内部子图的轴被隐藏。测试代码如下:

import numpy as np
import pandas as pd
import plotly.express as px

# create a dummy dataframe with lots of variables
rng = np.random.default_rng(42)
n_vars = 3
n_samples = 10
random_vars = [rng.normal(size=n_samples) for v in range(n_vars)]
m = np.vstack(random_vars).T
columns = pd.MultiIndex.from_tuples([('a','b'),('a','c'),('b','c')],names=['src','tgt'])
df = pd.DataFrame(m,columns=columns)

# convert to long format
df_long = df.melt()

# plot with plotly
fig = px.histogram(df_long,x='value',facet_row='src',facet_col='tgt')
fig.update_layout(yaxis={'side': 'left'})
fig.show()

解决方案

通过update_xaxes()和update_yaxes()统一配置所有分面子图的轴显示属性,即可让每个子图都显示X轴与Y轴:

import numpy as np
import pandas as pd
import plotly.express as px

# 创建测试数据
rng = np.random.default_rng(42)
n_vars = 3
n_samples = 10
random_vars = [rng.normal(size=n_samples) for v in range(n_vars)]
m = np.vstack(random_vars).T
columns = pd.MultiIndex.from_tuples([('a','b'),('a','c'),('b','c')],names=['src','tgt'])
df = pd.DataFrame(m,columns=columns)

# 转换为长格式
df_long = df.melt()

# 绘制直方图
fig = px.histogram(df_long,x='value',facet_row='src',facet_col='tgt')
fig.update_layout(yaxis={'side': 'left'})

# 配置所有子图显示X/Y轴
fig.update_xaxes(showticklabels=True, matches=None)
fig.update_yaxes(showticklabels=True, matches=None)

fig.show()
  • showticklabels=True:强制每个子图显示轴刻度标签与轴线
  • matches=None:取消默认的轴共享机制,让每个子图的轴刻度范围可独立调整(若不需要独立范围,仅保留showticklabels=True即可)

内容的提问来源于stack exchange,提问作者Johannes Wiesner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 05:15:29