在 plotly 中,如何创建链接的 X 轴?

alk*_*mid 5 python plotly

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)
Run Code Online (Sandbox Code Playgroud)

我正在尝试在图的顶部创建第二个 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)
Run Code Online (Sandbox Code Playgroud)

所以效果应该是这样的: matplotlib 中的缩放轴

我如何在 plotly 中达到相同的效果?

Chr*_*s P 3

八九不离十!下面是 Plotly 中多个 x 轴的简单示例,改编自Plotly 中多个 y 轴的示例(使用 Python)

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')
Run Code Online (Sandbox Code Playgroud)

这创建了这个图:具有多个 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')
Run Code Online (Sandbox Code Playgroud)

这是图表

  • @Chris_P 感谢您的回复,但您正在使用两条痕迹。如果我只想绘制一条迹线,有没有办法创建具有不同缩放比例的两个轴? (2认同)
  • 但即使我创建 2 条迹线,轴也不会链接(即,当另一个迹线放大时,一个迹线不会放大)。有很多应用:两个温标(一个是°C,另一个是°F),光谱学(一个是波长,另一个是波数/能量),我的例子(一个是电流,电流密度 - 这取决于样品的几何形状 - 另一方面)等。 (2认同)
  • 不是真的,抱歉。要点是轴应该是“链接的”,即一个轴应该在另一个轴进行平移/缩放时进行平移/缩放,就像我的问题底部的动画一样。这将是一个很好的功能。 (2认同)