#python #plotly
#python #plotly
Вопрос:
У меня есть следующий график, выполненный в Plotly
Как вы можете видеть, оси X, Y расположены традиционным образом. Как я могу повернуть ось так, чтобы X отображался вертикально, а Y — горизонтально (слева)?
(также я хотел бы изменить охват и разделение каждой оси)
Я полагаю, это должно что-то делать с элементом layout.
Мой код, если до сих пор
layout= go.Layout(title=go.layout.Title(text=title,x=0.5),
xaxis={'title':'x[m]'},
yaxis={'title':'y[m]'})
point_plot=[
go.Scatter(x=[series[listoflabels[0]]],y=[series[listoflabels[1]]],name="V0"),
go.Scatter(x=[series[listoflabels[2]]],y=[series[listoflabels[3]]],name="GT"),
go.Scatter(x=[0],y=[0],name="egoCar")
]
return go.Figure(data=point_plot, layout=layout)
Редактировать:
Чтобы сделать его воспроизводимым, я изменил код на
layout1= go.Layout(title=go.layout.Title(text="A graph",x=0.5),
xaxis={'title':'x[m]'},
yaxis={'title':'y[m]'})
point_plot=[
go.Scatter(x=[3],y=[1],name="V0"),
go.Scatter(x=[5],y=[2],name="GT"),
go.Scatter(x=[0],y=[0],name="egoCar")
]
go.Figure(data=point_plot, layout=layout1).show()
и график
Комментарии:
1. Есть ли шанс, что вы могли бы изменить свой код, чтобы он был воспроизводимым? Я знаю, есть ли объект plotly graph, но также заголовок и, кто знает, что еще.
2. @hrokr Я отредактировал его до необходимого минимума.
Ответ №1:
Я не в курсе, что в Plotly есть какой-либо встроенный метод для переключения осей x и y. Однако вы можете добиться этого самостоятельно, просто переключив названия осей x и y, а затем переключив параметры x
и y
, которые соответствуют вашим точкам.
Затем вы можете поместить ось y (содержащую ваши координаты x) в правую часть вашего макета и изменить диапазон оси x (содержащий ваши координаты y) таким образом, чтобы начало координат находилось в нижней правой части.
import plotly.graph_objects as go
# switch the axes titles
layout1= go.Layout(title=go.layout.Title(text="A graph",x=0.5),
xaxis={'title':'y[m]'},
yaxis={'title':'x[m]', 'side':'right'})
# switch the x- and y-coordinates
point_plot=[
go.Scatter(y=[3],x=[1],name="V0"),
go.Scatter(y=[5],x=[2],name="GT"),
go.Scatter(y=[0],x=[0],name="egoCar")
]
fig = go.Figure(data=point_plot, layout=layout1)
# reverse the range of the xaxis (which contains the y values)
fig.update_xaxes(autorange="reversed")
fig.show()
Комментарии:
1. Спасибо. Кажется, это работает. Однако у меня все еще есть проблема, и я опубликую ее как вопрос. Я был бы признателен, если бы вы могли взглянуть
2. Я пометил это как принятый ответ. Просто обратите внимание, что
autorange="reversed"
можно заменить на ‘autorange= [(положительное число),(отрицательное число)]`, если мы хотим задать диапазон вручную.
Ответ №2:
Дерек О выбрал то, что проще всего реализовать. Это аналог графика, где 1 км равен 0,6 мили или a, b = b, a
Второй вариант — абстрагировать данные и ваши оси. По сути, это говорит то же самое, но может быть проще для чтения, поскольку Plotly обладает уникальной способностью довольно быстро превращать понятный, хорошо структурированный Python в уродливый JS без скобок.
Третий вариант — дополнительно абстрагировать это и задать ваши оси для вас.