在Plotly中设置y轴的范围。

78
我用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)]
2个回答

132

更新至较新版本

设置图表时,您可以使用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])

如果您已经有一个名为fig的图形,您可以使用以下方法:

fig.update_layout(yaxis_range=[-4,4])

并且:

fig.update(layout_yaxis_range = [-4,4])

或者:

fig.update_yaxes(range = [-4,4])

图例:

输入图片说明

完整代码:

# 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()

使用plotly.offlineiplot创建图形:

layout = go.Layout(yaxis=dict(range=[fromValue, toValue])

如果您已经有了一个名为fig的图形对象,您可以使用以下代码:

fig.update_layout(yaxis=dict(range=[fromValue,toValue]))

情节:

enter image description here

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)

一些重要细节:

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

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

如果您想进一步格式化标题,则可能会更加棘手。我发现最简单的方法是添加另一个带有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。因此会出现错误。

绘图:

enter image description here

具有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)

1
使用plotly.py的魔法下划线符号,可以简化update_layout调用:fig.update_layout(yaxis_range=[fromValue, toValue]) - Daniel Himmelstein

3
如果我理解正确,您想要限制y轴本身的范围。 您可以在关键字参数yaxis中传递一个字典。 它可能类似于go.Layout(yaxis = dict(range = [0, 10]))。 希望这可以帮助您。

有关此主题的更多文档,请参见:https://plot.ly/python/axes/#setting-the-range-of-axes-manually - Strijder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接