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

Plotly如何仅设置坐标轴下限,让上限自动调整?

解决Plotly固定坐标轴下限、自动调整上限的问题

可行,但Plotly的range参数不支持直接用None表示自动调整边界,得换方式实现。

问题原因

你代码里fig.update_yaxes(range=[numpy.log10(3),None])无效,是因为Plotly要求range必须是包含两个数值的列表,不能用None占位。

解决方案1:利用Plotly自动计算的范围

先让Plotly渲染图表并算出自动的坐标轴范围,再提取上限值,结合自定义下限重新设置:

import plotly.graph_objects as go
import numpy

# 避免x=0导致y出现inf,可根据实际需求调整
x = numpy.linspace(0.01, 1, 99)
y = 1/x

fig = go.Figure()
fig.add_trace(go.Scatter(x=x, y=y, mode='markers'))
fig.update_yaxes(type='log')

# 获取Plotly自动计算的完整布局参数
full_fig = fig.full_figure_for_development(warn=False)
# 提取自动计算的y轴对数刻度上限
auto_y_upper = full_fig.layout.yaxis.range[1]

# 设置固定下限+自动上限
fig.update_yaxes(range=[numpy.log10(3), auto_y_upper])
fig.show()

解决方案2:手动计算数据的有效最大值

如果需要自己控制数据过滤逻辑,可以手动计算y轴的有效最大值,再转换为对数刻度的上限:

import plotly.graph_objects as go
import numpy

x = numpy.linspace(0, 1, 99)
y = 1/x

# 过滤掉无效的inf值,计算有效数据的最大值
valid_y = y[numpy.isfinite(y)]
y_max = numpy.max(valid_y)
# 转换为对数刻度对应的上限值
log_y_max = numpy.log10(y_max)

fig = go.Figure()
fig.add_trace(go.Scatter(x=x, y=y, mode='markers'))
fig.update_yaxes(type='log', range=[numpy.log10(3), log_y_max])
fig.show()

两种方案都能实现固定y轴下限为3(对数刻度对应numpy.log10(3)),同时让上限根据数据自动调整的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:03:16