如何设置Plotly散点图的坐标轴与网格线为均匀间隔?
解决方案
问题根源是Plotly默认会自动适配坐标轴范围到数据分布区间,仅设置tickvals仅能指定刻度显示位置,不会改变坐标轴本身的取值范围,补充range参数固定坐标轴区间即可解决问题。
核心修改点
- 补全遗漏的
plotly.express导入语句 - 给x轴添加
range=[0, 100]参数固定x轴范围 - 给y轴添加
range=[df['y'].min(), df['y'].max()]参数固定y轴范围,若需要留白可自行调整上下限数值
修改后完整代码
import plotly.graph_objects as go import plotly.express as px import pandas as pd df = pd.DataFrame({'x':[54,44,43,43,63,55,59],'y':[1259305,1295003,1888391,2000000,1500001,1123433,1459330]}) fig = px.scatter(x=df['x'], y=df['y']) fig.update_layout( autosize=False, xaxis = dict( tickmode = 'array', tickvals = [0, 50, 100], range = [0, 100] # 固定x轴范围 ), yaxis = dict( tickmode = 'array', tickvals = [df['y'].min(),df['y'].median(),df['y'].max()], range = [df['y'].min()*0.95, df['y'].max()*1.05] # 固定y轴范围,加5%边距和Matplotlib示例效果一致 )) fig.show()
补充说明
如果后续需要调整刻度间隔,也可以直接使用dtick参数替代tickmode和tickvals设置,比如x轴设置dtick=50,即可自动生成间隔为50的均匀刻度,无需手动指定每个刻度值。
内容的提问来源于stack exchange,提问作者AI92
相关产品推荐
相关产品推荐

