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)
Я пытаюсь создать вторую ось X в верхней части графика (назовем ее x2). Я хочу, чтобы он был связан с значениями x1 с помощью формулы x2 = x1 * 0,3. В Matplotlib, я бы просто определить другую ось, и пересмотреть свой диапазон, и отношение будет сохраняться, даже если увеличить в/из:Как я могу создать связанную ось X?
ax2 = ax1.twiny()
start, end = ax1.get_xlim()
ax2.set_xlim(start*0.3, end*0.3)
Так что эффект должен выглядеть следующим образом:
Как Я получаю такой же эффект в сюжете?
@Chris_P Спасибо за ответ, но вы используете два следа. Есть ли способ создать две оси с различным масштабированием, если я хочу только построить одну трассировку? – alkamid
Ох, я вижу. Нет, каждая трасса может быть привязана только к одной оси. Таким образом, вы можете создать 2 трассировки с одинаковыми данными и прикрепить каждую трассировку к другой оси с другим диапазоном. Любопытно, какая мотивация для двух осей, один след? –
, но даже если я создам 2 следа, оси не будут связаны (т. Е. Один не будет увеличивать масштаб, если другой делает). Существует множество приложений: две температурные шкалы (° C на одной, ° F на другой), спектроскопия (длина волны на одном, волновое число/энергия на другом), мой пример (ток на один, плотность тока - который зависит от геометрия образца - с другой) и т. д. – alkamid