Как нарисовать нефункциональный график с помощью Plotly? - PullRequest
0 голосов
/ 26 апреля 2020

Я использую плотно в R, хотя я не думаю, что это должно иметь значение. По сути, я хочу нарисовать линейный график набора точек, которые не соответствуют функции (в математическом смысле). Посмотрите код ниже для простого примера, я думаю, что это довольно очевидно, в чем проблема. Я хочу, чтобы второй график просто выглядел как первый, перевернутый по осям x / y.

Чтобы пояснить, приведенный ниже пример можно решить с помощью обратной функции (квадрат root), но я ' Я ищу универсальное c решение, которое не зависит от наличия явно обратимой функции.

library(plotly)
library(magrittr)

x <- seq(from=-2, to=2, length.out = 200)
y <- x^2

p1 <- plot_ly() %>%
  add_lines(x=x, y=y)

p2 <- plot_ly() %>%
  add_lines(x=y, y=x)

enter image description here

enter image description here

1 Ответ

1 голос
/ 27 апреля 2020

Я действительно думаю, что это будет полностью зависеть от специфики вашего набора данных. В вашем образце данных у вас есть уникальное значение x для каждого y. Причина, по которой ваша вторая фигура терпит неудачу (в том смысле, что вы не получаете гладкую непрерывную линию), заключается в том, что у вас больше нет уникального значения на оси X для каждого значения на оси Y. Чтобы получить визуальный результат, который вы, похоже, ищете с этим конкретным набором данных, вы можете отделить положительные и отрицательные числа для вашей оси y и применить две трассы:

enter image description here

Полный код:

library(plotly)
library(magrittr)


x <- seq(from=-2, to=2, length.out = 200)
y <- x^2

df1 = data.frame(x1=x,
                y1=y
                )

df2 <- filter(df1, x1 <= 0)
df3 <- filter(df1, x1  > 0)


p1 <- plot_ly() %>%
  add_lines(data=df2, x=~y1 , y=~x1, line = list(color = '#636EFA', width = 1.5))

p1 <- p1 %>% add_lines(data=df3, x=~y1 , y=~x1, line = list(color = '#636EFA', width = 1.5))

p1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...