#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 находится в обратном порядке.