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

2022-01-21 00:00:00 python plotly plotly-python

问题描述

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

layout = go.Layout(标题=go.layout.Title(文本=测试",外部参照='纸',x=0),xaxis=go.layout.XAxis(滴答模式='线性',滴答字体=字典(大小=10),标题=go.layout.xaxis.Title(字体=字典(尺寸=14,颜色='#7f7f7f'))),yaxis=go.layout.YAxis(标题=go.layout.yaxis.Title(文本=y,字体=字典(尺寸=14,颜色='#7f7f7f'))))数据 = [go.Scatter(x=x1, y=y1)]

解决方案

更新到新版本

设置图形时,您可以使用 plotly 的

完整代码:

# 导入将熊猫导入为 pd导入 plotly.graph_objs将 numpy 导入为 np# 数据np.random.seed(4)x = np.linspace(0, 1, 50)y = np.cumsum(np.random.randn(50))# 绘制折线图fig = go.Figure(data=go.Scatter(x=x, y=y, mode='lines'), layout_yaxis_range=[-4,4])fig.update_layout(yaxis_range=[-4,4])图.show()


使用 plotly.offlineiplot 且没有魔法下划线表示法的原始答案:

设置图形时,使用:

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

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

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

剧情:

Jupyter Notebook 的完整代码:

# 导入从 plotly.offline 导入 download_plotlyjs, init_notebook_mode, plot, iplot将熊猫导入为 pd导入 plotly.graph_objs将 numpy 导入为 np# 设置init_notebook_mode(连接=真)# 数据np.random.seed(4)x = np.linspace(0, 1, 50)y = np.cumsum(np.random.randn(50))# 线跟踪 = go.Scatter(x=x,y=y,)# 布局布局 = go.Layout(yaxis=dict(range=[-4,4]))# 阴谋fig = go.Figure(data=[trace], layout=layout)iplot(无花果)

一些重要细节:

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

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

如果您想进一步格式化该标题,这有点更棘手.我发现用 title = go.layout.yaxis.Title(text='y Axis', font=dict(size=14, color='#7f7f7f') 添加另一个元素是最简单的.只要你做对了,你就不应该遇到上面评论中的情况:

<块引用>

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

看看这个:

剧情:

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

# 导入从 plotly.offline 导入 download_plotlyjs, init_notebook_mode, plot, iplot将熊猫导入为 pd导入 plotly.graph_objs将 numpy 导入为 np# 设置init_notebook_mode(连接=真)# 数据np.random.seed(4)x = np.linspace(0, 1, 50)y = np.cumsum(np.random.randn(50))# 线跟踪 = go.Scatter(x=x,y=y,)# 布局布局=去.布局(yaxis=dict(范围=[-4,4],title = go.layout.yaxis.Title(text='y 轴', font=dict(size=14, color='#7f7f7f'))))# 阴谋fig = go.Figure(data=[trace], layout=layout)iplot(无花果)

I have the following code to create the line plot with Plotly. How can I set the range of Y axis to always have it in [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)]

解决方案

Update for newer versions

When setting up a figure you can use plotly's magic underscore notation and specify layout_yaxis_range=[<from_value>, <to_value>] like this:

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

Or if you've already got a figure named fig, you can use:

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

And:

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

Or:

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

Figure:

Complete code:

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


Original answer using plotly.offline, iplot and no magic underscore notation:

When setting up a figure, use:

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

Or if you've already got a figure named fig, you can use:

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

Plot:

Complete code for 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)

Some important details:

With this setup, you can easily add an y axis title like this:

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

It's a little more tricky if you'd like to format that title further. I find it easiest to actually add another element with title = go.layout.yaxis.Title(text='y Axis', font=dict(size=14, color='#7f7f7f'). As long as you do it the right way, you should not experience the situation in your comment above:

Thanks. I tried it. But then I have 2 definitions of yaxis in the Layout: yaxis=dict(range=[0, 10]) and yaxis=go.layout.YAxis. Therefore an error appears.

Take a look at this:

Plot:

Complete code with y-axis text formatting:

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

相关文章