75 votes

Plotly : Comment définir l'étendue de l'axe des y ?

J'ai le code suivant pour créer le graphique linéaire avec Plotly. Comment puis-je définir la plage de l'axe Y pour qu'elle soit toujours comprise entre [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)]

128voto

vestland Points 3267

Mise à jour pour les nouvelles versions

Lors de la mise en place d'une figure, vous pouvez utiliser la fonction de plotly notation magique de l'underscore et préciser layout_yaxis_range=[<from_value>, <to_value>] comme ça :

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

Ou si vous avez déjà un personnage nommé fig vous pouvez l'utiliser :

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

Figure :

enter image description here

Code complet :

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

Réponse originale utilisant plotly.offline , iplot et pas de notation magique par soulignement :

Lors de la mise en place d'une figure, utilisez :

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

Ou si vous avez déjà un personnage nommé fig vous pouvez l'utiliser :

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

Plot :

enter image description here

Code complet pour 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)

Quelques détails importants :

Avec cette configuration, vous pouvez facilement ajouter un titre à l'axe des y comme ceci :

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

C'est un petit plus délicat si vous souhaitez formater davantage ce titre. Je trouve que le plus simple est d'ajouter un autre élément avec title = go.layout.yaxis.Title(text='y Axis', font=dict(size=14, color='#7f7f7f') . Tant que vous le faites de la bonne manière, vous ne devriez pas connaître la situation décrite dans votre commentaire ci-dessus :

Merci. J'ai essayé. Mais j'ai alors 2 définitions de yaxis dans le fichier Layout : yaxis=dict(range=[0, 10]) et yaxis=go.layout.YAxis. Par conséquent, une erreur apparaît.

Jetez un coup d'oeil à ça :

Plot :

enter image description here

Code complet avec formatage du texte de l'axe des 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)

3voto

Strijder Points 36

Si je comprends bien, vous voulez limiter la portée de l'axe des y lui-même. Vous pouvez passer un dict dans l'argument du mot-clé yaxis . Cela pourrait être quelque chose comme go.Layout(yaxis=dict(range=[0, 10])) J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X