R сюжет: Как соединить линии на полярной / радиолокационной карте? - PullRequest
0 голосов
/ 01 февраля 2020

Я создаю полярную диаграмму в R с помощью plotly, но я не хочу, чтобы значения между линиями были заполнены цветом. Я нашел свойство line_close для библиотеки python, но не могу найти эквивалент в R.

Код диаграммы:

library(plotly)

p <- plot_ly(
  type = 'scatterpolar',
  mode = 'lines',
) %>%
  add_trace(
    mode = 'lines',
    r = c(3, 0, 1),
    theta = c('A','B','C'),
    name = '1'
  ) %>%
  add_trace(
    mode = 'lines',
    r = c(1, 2, 3),
    theta = c('A','B','C'),
    name = '2'
  ) %>%
  layout(
    polar = list(
      radialaxis = list(
        angle = 90,
        visible = T,
        range = c(0,3),
        showline = F,
        color = '#bfbfbf',
        nticks = 4,
        tickangle = 90
      )
    )
  )

p

Изображение диаграммы:

enter image description here

1 Ответ

1 голос
/ 02 февраля 2020

Я хорошо просмотрел plotly::schema, и, кажется, нет возможности сделать это встроенным в порт R plotly.

Однако , тривиально определить собственную функцию add_closed_trace следующим образом:

add_closed_trace <- function(p, r, theta, ...) 
{
  plotly::add_trace(p, r = c(r, r[1]), theta = c(theta, theta[1]), ...)
}

Вы можете использовать это в качестве вставки для add_trace, например:

library(plotly)

p <- plot_ly(
  type = 'scatterpolar',
  mode = 'lines',
) %>%
  add_closed_trace(
    mode = 'lines',
    r = c(3, 0, 1),
    theta = c('A','B','C'),
    name = '1'
  ) %>%
  add_closed_trace(
    mode = 'lines',
    r = c(1, 2, 3),
    theta = c('A','B','C'),
    name = '2'
  ) %>%
  layout(
    polar = list(
      radialaxis = list(
        angle = 90,
        visible = T,
        range = c(0,3),
        showline = F,
        color = '#bfbfbf',
        nticks = 4,
        tickangle = 90
      )
    )
  )

p

enter image description here

...