5
import matplotlib.pyplot as plt
import numpy as np
import plotly.plotly as py
from plotly.graph_objs import *

py.sign_in('uname', 'pass')


trace1 = Scatter(
    x=[1,2,3,4,5,6,7,8],
    y=[24,25,30,21,33,31,30,29],
    mode='lines',
    xaxis='x1',
    )

layout = Layout(
    title="My first plot",
    yaxis=YAxis(
        title = "y1"
        ),
    xaxis=XAxis(
        title= 'x1',
        anchor = 'x2'
        ),
    xaxis2=XAxis(
        title= 'x2',
        side = 'top',
        overlaying = 'y'
        ),
    )

data = [trace1]

fig = Figure(data=data, layout=layout)

plot_url = py.plot(fig)

プロットの上部に 2 番目の X 軸を作成しようとしています (x2 と呼びましょう)。式 x2=x1*0.3 で x1 値にリンクしたい。matplotlib では、別の軸を定義してその範囲を再定義するだけで、ズームイン/ズームアウトしても比率が維持されます。

ax2 = ax1.twiny()
start, end = ax1.get_xlim()
ax2.set_xlim(start*0.3, end*0.3)

したがって、効果は次のようになります。matplotlib のスケーリングされた軸

plotlyで同じ効果を得るにはどうすればよいですか?

4

1 に答える 1

3

非常に近いです!Python を使用した Plotly の複数の y 軸のこの例から適応された、Plotly の複数の x 軸の簡単な例を次に示します。

import plotly.plotly as py
from plotly.graph_objs import *

trace1 = Scatter(
    x=[1,2,3],
    y=[24,30,25],
    mode='lines',
    xaxis='x1',
)

trace2 = Scatter(
    x=[10,20,30],
    y=[24,25,30],
    mode='lines',
    xaxis='x2',
)

layout = Layout(
    title="Multiple X-Axes",
    yaxis=YAxis(
        title = "y1"
        ),
    xaxis=XAxis(
        title= 'x-axis 1'
    ),
    xaxis2=XAxis(
        title= 'x-axis 2',
        side = 'top',
        overlaying='x1'
    )
)

data = [trace1, trace2]

fig = Figure(data=data, layout=layout)

py.plot(fig, filename='multiple x axes')

このグラフを作成する: 複数の x 軸を持つグラフ(インタラクティブ バージョン: https://plot.ly/~chris/3285 )

個々の軸でズームとパンができることに注意してください。複数の x 軸を持つ Plotly グラフの対話性

Rangeパラメータを使用して、これらの軸の範囲を手動で指定できます。これにより、スクロールでズームインおよびズームアウトしても比率が維持されます。簡単な例を次に示します。

import plotly.plotly as py
from plotly.graph_objs import *

trace1 = Scatter(
    x=[1,2,3],
    y=[24,30,25],
    mode='lines',
    xaxis='x1',
)

trace2 = Scatter(
    x=[10,20,30],
    y=[24,25,30],
    mode='lines',
    xaxis='x2',
)

layout = Layout(
    title="Multiple X-Axes",
    yaxis=YAxis(
        title = "y1"
        ),
    xaxis=XAxis(
        title= 'x-axis 1',
        range=[1, 3]
    ),
    xaxis2=XAxis(
        title= 'x-axis 2',
        side = 'top',
        overlaying='x1',
        range=[10, 30]
    )
)

data = [trace1, trace2]

fig = Figure(data=data, layout=layout)

py.plot(fig, filename='multiple x axes with custom range')

そしてグラフがこちら

于 2014-12-06T19:20:26.990 に答える