dash中update_yaxes函数怎样控制yaxis2
在 Plotly 的 update_yaxes
函数中,可以通过设置参数 row
和 col
(如果是子图)或直接使用 yaxis
名称(如 yaxis2
)来控制特定的 Y 轴属性。update_yaxes
是一个便捷函数,用于更新图表布局中某个或某些 Y 轴的属性。
使用 update_yaxes
控制 yaxis2
的方法
基本语法
fig.update_yaxes(<y-axis-specific-properties>, yaxis="y2")
其中,yaxis="y2"
明确指定要更新 yaxis2
的属性。
完整示例
import plotly.graph_objects as go
# 创建一个带两个 Y 轴的图
fig = go.Figure()
# 添加第一个数据集到主 Y 轴
fig.add_trace(go.Scatter(x=[1, 2, 3], y=[10, 20, 30], name="Y1 Data", yaxis="y"))
# 添加第二个数据集到第二个 Y 轴
fig.add_trace(go.Scatter(x=[1, 2, 3], y=[40, 50, 60], name="Y2 Data", yaxis="y2"))
# 设置布局,初始化两个 Y 轴
fig.update_layout(
yaxis=dict(domain=[0, 0.5], title="Primary Y-Axis"),
yaxis2=dict(domain=[0.51, 1], title="Secondary Y-Axis"),
)
# 使用 update_yaxes 来修改 yaxis2 的属性
fig.update_yaxes(title="Updated Y2 Title", showgrid=True, gridwidth=2, gridcolor="blue", yaxis="y2")
# 显示图
fig.show()
关键点说明
-
yaxis="y2"
:- 指定
yaxis2
,即更新图表布局中的第二个 Y 轴。
- 指定
-
update_yaxes
属性:
可以传入的属性包括:title
: 设置 Y 轴标题。range
: 设置轴范围,如range=[0, 100]
。showgrid
: 是否显示网格线(布尔值)。gridwidth
: 设置网格线宽度。gridcolor
: 设置网格线颜色。
多个子图情况下的使用
如果图表使用 make_subplots
来创建多个子图,则需要指定 row
和 col
来定位 yaxis2
的具体位置。
示例:在子图中更新 yaxis2
from plotly.subplots import make_subplots
# 创建子图
fig = make_subplots(rows=2, cols=1, shared_xaxes=True)
# 添加第一个子图
fig.add_trace(go.Scatter(x=[1, 2, 3], y=[10, 20, 30], name="Y1 Data"), row=1, col=1)
# 添加第二个子图
fig.add_trace(go.Scatter(x=[1, 2, 3], y=[40, 50, 60], name="Y2 Data"), row=2, col=1)
# 使用 update_yaxes 更新第二个子图的 Y 轴
fig.update_yaxes(title="Y2 Updated Title", range=[0, 100], row=2, col=1)
# 显示图
fig.show()
关键参数说明
-
row
和col
:- 指定子图中轴的行和列位置。
- 在子图场景中,这比直接使用
yaxis
更常用。
-
适用于子图场景:
- 如果没有使用
row
和col
,更新时可能作用于主图的 Y 轴(默认yaxis
)。
- 如果没有使用
常用的 Y 轴属性
以下是可以用在 update_yaxes
中的常用属性:
属性 | 描述 |
---|---|
title | 设置 Y 轴标题(如 title="Y-Axis Label" )。 |
range | 设置轴范围(如 range=[0, 100] )。 |
showgrid | 是否显示网格线(布尔值,如 showgrid=True )。 |
gridcolor | 网格线颜色(如 gridcolor="blue" )。 |
gridwidth | 网格线宽度(如 gridwidth=2 )。 |
tickvals | 指定刻度值列表(如 tickvals=[0, 10, 20] )。 |
ticktext | 与 tickvals 对应的显示文本(如 ticktext=["Low", "Medium", "High"] )。 |
linecolor | 设置 Y 轴线的颜色。 |
linewidth | 设置 Y 轴线的宽度。 |
总结
- 在普通图表中,使用
yaxis="y2"
来指定更新yaxis2
的属性。 - 在子图场景中,使用
row
和col
来指定具体的子图位置。 update_yaxes
是更新 Y 轴属性的强大工具,适用于单轴、多轴和子图场景。