Plotly:如何设置 y 轴的范围?

Tat*_*tik 26 python plotly plotly-python

我有以下代码可以使用 Plotly 创建线图。如何将 Y 轴的范围设置为始终在 [0; 10]?

layout = go.Layout(
        title=go.layout.Title(
            text="Test",
            xref='paper',
            x=0
        ),
        xaxis=go.layout.XAxis(
            tickmode='linear',
            tickfont=dict(
                size=10
            ),
            title=go.layout.xaxis.Title(
                font=dict(
                    size=14,
                    color='#7f7f7f'
                )
            )
        ),
        yaxis=go.layout.YAxis(
            title=go.layout.yaxis.Title(
                text=y,
                font=dict(
                    size=14,
                    color='#7f7f7f'
                )
            )
        )
    )

    data = [go.Scatter(x=x1, y=y1)]
Run Code Online (Sandbox Code Playgroud)

ves*_*and 41

更新新版本

设置图形时,您可以使用 plotly 的神奇下划线符号并指定layout_yaxis_range=[<from_value>, <to_value>]如下:

fig = go.Figure(data=go.Scatter(x=x, y=y, mode='lines'), layout_yaxis_range=[-4,4])
Run Code Online (Sandbox Code Playgroud)

或者,如果您已经有一个名为 的图形fig,则可以使用:

fig.update_layout(yaxis_range=[-4,4])
Run Code Online (Sandbox Code Playgroud)

和:

fig.update(layout_yaxis_range = [-4,4])
Run Code Online (Sandbox Code Playgroud)

或者:

fig.update_yaxes(range = [-4,4])
Run Code Online (Sandbox Code Playgroud)

数字:

在此处输入图片说明

完整代码:

# imports
import pandas as pd
import plotly.graph_objs as go
import numpy as np

# data
np.random.seed(4)
x = np.linspace(0, 1, 50)
y = np.cumsum(np.random.randn(50))

# plotly line chart
fig = go.Figure(data=go.Scatter(x=x, y=y, mode='lines'), layout_yaxis_range=[-4,4])
               
fig.update_layout(yaxis_range=[-4,4])
fig.show()
Run Code Online (Sandbox Code Playgroud)

使用plotly.offline, 的原始答案, iplot没有神奇的下划线符号:

设置图形时,请使用:

layout = go.Layout(yaxis=dict(range=[fromValue, toValue])
Run Code Online (Sandbox Code Playgroud)

或者,如果您已经有一个名为 的图形fig,则可以使用:

fig.update_layout(yaxis=dict(range=[fromValue,toValue]))
Run Code Online (Sandbox Code Playgroud)

阴谋:

在此处输入图片说明

Jupyter Notebook 的完整代码:

# imports
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
import pandas as pd
import plotly.graph_objs as go
import numpy as np

# setup
init_notebook_mode(connected=True)

# data
np.random.seed(4)
x = np.linspace(0, 1, 50)
y = np.cumsum(np.random.randn(50))

# line
trace = go.Scatter(
    x=x,
    y=y,
)

# layout
layout = go.Layout(yaxis=dict(range=[-4,4])
)

# Plot
fig = go.Figure(data=[trace], layout=layout)
iplot(fig)
Run Code Online (Sandbox Code Playgroud)

一些重要的细节:

使用此设置,您可以轻松添加 y 轴标题,如下所示:

# layout
layout = go.Layout(yaxis=dict(range=[-4,4]), title='y Axis')
)
Run Code Online (Sandbox Code Playgroud)

这是一个更棘手的,如果你想进一步格式化标题。我发现用title = go.layout.yaxis.Title(text='y Axis', font=dict(size=14, color='#7f7f7f'). 只要你以正确的方式去做,你就不应该在上面的评论中遇到这种情况:

谢谢。我尝试过这个。但是我在布局中有 2 个 yaxis 定义:yaxis=dict(range=[0, 10]) 和 yaxis=go.layout.YAxis。因此出现错误。

看看这个:

阴谋:

在此处输入图片说明

带有 y 轴文本格式的完整代码:

# imports
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
import pandas as pd
import plotly.graph_objs as go
import numpy as np

# setup
init_notebook_mode(connected=True)

# data
np.random.seed(4)
x = np.linspace(0, 1, 50)
y = np.cumsum(np.random.randn(50))

# line
trace = go.Scatter(
    x=x,
    y=y,
)

# layout
layout = go.Layout(
    yaxis=dict(range=[-4,4],
    title = go.layout.yaxis.Title(text='y Axis', font=dict(size=14, color='#7f7f7f')))
)

# Plot
fig = go.Figure(data=[trace], layout=layout)
iplot(fig)
Run Code Online (Sandbox Code Playgroud)