首页 > 解决方案 > Python Plotly 图形与辅助 x 轴链接到主要

问题描述

我一直在为这个看似简单的任务而苦苦挣扎:如何将两个 x 轴与相关数据对齐。在我的例子中,一个轴是摄氏温度,另一个是华氏温度。

我想要实现的是获得两个 x 轴的对齐,以便:

32°F = 0°C 和 50°F = 10°C

通过这种关系,两个数据集将在温度方面对齐。

我希望将两个单位集放在同一个图表上,以便查看者可以根据他们习惯的单位来解释数据。

这是我的代码:

import plotly.graph_objects as go
from plotly.subplots import make_subplots
from plotly.graph_objs.layout import YAxis,XAxis,Margin

layout = go.Layout(
    title="Double X Axis Example",
    xaxis=XAxis(
        title="Celcius"
    ),
    xaxis2 = XAxis(
        title="Fahrenheits",
        overlaying= 'x', 
        side= 'top',
    ),
    yaxis=dict(
        title="Y values"
    ),
)

# Create figure with secondary x-axis
fig = go.Figure(layout=layout)

# Add traces
fig.add_trace(
    go.Scatter(x=[10, 20, 30], y=[4.5, 6, 5], name="data set in celcius"),
)

fig.add_trace(
    go.Scatter(x=[40, 60, 80], y=[4, 5, 6.5], name="data set in fahrenheit", xaxis='x2'),
)

fig.show()

这是未对齐轴的结果图(10°C = 40°F!?): 结果图

谢谢,

标签: pythonplotly

解决方案


在这种情况下,设置 x 轴的范围可能会有所帮助,如下所示:

fig.add_trace(
    go.Scatter(x=[10, 20, 30], y=[4.5, 6, 5,], name="data set in celcius",xaxis="x1"),
)

fig.add_trace(
    go.Scatter(x=[40, 60, 80], y=[4, 5, 6.5], name="data set in fahrenheit", xaxis='x2'),
)


fig.update_layout(
    xaxis1=dict(range=[0, 100]),
    xaxis2=dict(range=[32, 212]),
    )

...可能计算 x1 所需的限制,然后以此为基础 x2 限制。


推荐阅读