Как изменить значения оси при использовании plotly?

#python #pandas #jupyter-notebook #plotly #jupyter

#ось #plotly #изменение

Вопрос:

Вот программа, которую я использовал:

 library(plotly)

mydata = read.csv("data_to_plot.txt")
df = as.data.frame(mydata)

p <- df %>%
  group_by(X) %>%
  plot_ly(x = ~Y, y = ~X, z = ~Z, type = "scatter3d", mode = "lines")
p  
  

и ниже приведен отрывок из «mydata»:

df[1:12,]
X Y Z
1 1 0.2818017 0.0005993884
2 1 0.2832173 0.0007896421
3 1 0.2846330 0.0010293849
4 1 0.2860487 0.0013282462
5 1 0.2874643 0.0016969544

Я хотел бы изменить значения X на оси X, но не могу найти, как изменить мою программу. Детали plotly синтаксиса для меня довольно неясны. Может ли кто-нибудь оказать некоторую помощь? Большое спасибо.

Данные, построенные: введите описание изображения здесь

Ответ №1:

Вы, вероятно, ищете layout(xaxis = list(autorange = "reversed") .

Комментарии:

1. Спасибо, Максимилиан, я изменил программу:

2. p <- df %>% group_by(X) %>% plot_ly(x = ~ Y, y = ~ X, z = ~ Z, type = «scatter3d», mode = «lines») %>% layout(xaxis = список (автодиапазон = «обратный»)) p

3. Извините!!! Я хотел отправить только 1 сообщение, но неоднократно допускал ошибки при отправке. Проблема с измененной программой заключается в том, что я получил точно такой же график, с xaxis с самыми высокими кривыми сзади и меньшими спереди??? Что не так?

4. Когда вы меняете ось x, кажется, что плоскость z также перемещается. Возможно, именно по этой причине он выглядит идентично, хотя это не так? plot.ly/create/?fid=RPlotBot:3069 , найдите layout:scene:xaxis:range и поменяйте местами два значения.

5. Что ж, я думаю, я попытаюсь найти свой путь, используя «ggplot». Я просмотрел plot.ly/javascript-graphing-library/reference , но для новичка в «plotly» я нахожу это совершенно непонятным… Извините за потраченное впустую время.

Ответ №2:

На случай, если кто-то доберется сюда, ища обратную ось для некоторых сюжетных линий в python.

 fig.update_yaxes(autorange="reversed", row, col)
  

Ответ №3:

На данный момент обратный диапазон осей в 3d не поддерживается в plotly. По этой причине autorange = "reversed" не работает.

Комментарии:

1. Я пробовал, это работает: 'yaxis': {'autorange': 'reversed'} или 'yaxis': {'range': (100, 0)} смотрите: plotly.com/python-api-reference/generated /…

Ответ №4:

Если вы хотите изменить одну из осей 3D-графика:

 fig.update_layout(
    scene={
        'xaxis': {'autorange': 'reversed'}, # reverse automatically
        'yaxis': {'range': (100, 0)},       # manually set certain range in reverse order
    }
)
  

Подробнее: сцена.yAxis.autorange.

PS: Некоторые ребята писали, что это не работает для 3D-графика в предыдущих версиях Plotly. Я только что проверил последнюю версию (3D Surface), она работает нормально.

Ответ №5:

Вы можете решить эту проблему, продолжая вращать график с помощью поворота поворотного стола. Первоначально оси ориентированы так, чтобы наибольшие значения были обращены к вам. По мере поворота один за другим они будут ориентироваться в другую сторону, а затем вернуться к тому, с чего они начали. Возможно, именно поэтому autorange = "reversed" это не работает на 3D-графиках.

Комментарии:

1. Я пробовал это для 3D-графика поверхности, он работает нормально: я пробовал, он работает: 'yaxis': {'autorange': 'reversed'} или 'yaxis': {'range': (100, 0)} . Смотрите: plotly.com/python-api-reference/generated /…

Ответ №6:

Вы можете повернуть график, установив x=-x , и / или y=-y . Затем вы можете удалить знак минуса на графике, используя tickvals = list(-x_ticks) и ticktext = list(x_ticks) в layout . Не нашли способ удалить сигнал минус из hovertext. Но я думаю, у меня не может быть всего этого =)

Комментарии:

1. ммм, да, это альтернатива, но не такая элегантная. Разве нет другого способа?

Ответ №7:

При использовании plotly вы можете изменить свойства yaxis, передав словарь. Для изменения оси y используйте fig.update_layout , как показано:

 import plotly.graph_objects as go
import numpy as np

N = 1000
t = np.linspace(0, 10, 100)
y = np.sin(t)

fig = go.Figure(data=go.Scatter(x=t, y=y, mode='markers'))

fig.update_layout(
    yaxis = dict(autorange="reversed")
)

fig.show()
  

введите описание изображения здесь

Вы можете видеть, что ось Y находится в обратном порядке.