Arhn - архитектура программирования

Аннотация / Текст для меток в графической диаграмме R plotly

Скажем, у меня есть простой polar chart:

R-код:

library(plotly)

p <- plot_ly(
  type = 'scatterpolar',
  r = c(0,1,2,4),
  theta = c(0,45,90,120),
  size = c(10, 20, 30, 40),
  sizes = c(100, 300),
  mode = 'markers'
) %>%
  layout(
    showlegend = FALSE,
    polar = list(
      angularaxis = list(
        showticklabels = TRUE#,
        #tickmode="array",
        #tickvals = c(22.5, 67.5, 112, 157.5, 202, 247.5, 292, 337.5),
        #ticktext = c('A', "B", "C", "D", "E", "F", "G", "H")
    ),
      radialaxis = list(
        tickmode="array",
        tickvals = c(0, 1, 2, 3, 4, 5, 6, 7),
        ticktext = c('', "One", "Two", "Three", "Four", "Five", "Six", "Seven")
      )
  )
  )
ggplotly(p)

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

Когда я устанавливаю showticklabels = FALSE, метки углов исчезают, а затем я хочу поставить A,B,C,D,E,F,G and H под углами c(22.5, 67.5, 112, 157.5, 202, 247.5, 292, 337.5).

Я не могу получить ожидаемый ниже график, используя ticktexts и tickvals. Может ли кто-нибудь помочь мне найти решение, или если это возможно с add_text или add_annotation?

Ожидаемый сюжет:

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


Ответы:


1

вы можете полностью удалить все линии сетки в angularaxis с showgrid = FALSE, или вы можете иметь линию на 22,5 градуса, начинающуюся с 0, а затем ticktext будет что-то вроде этого c('', 'A', '', 'B', '', 'C', .......), или вы можете утомительно добавить линии, которые вы ожидаете иметь, а затем удалить линии сетки вот такие:

p <- plot_ly() %>% 
  # data points
  add_trace(type = 'scatterpolar',
            r = c(0,1,2,4),
            theta = c(0,45,90,120),
            size = c(10, 20, 30, 40),
            sizes = c(100, 300),
            mode = 'markers') %>%
  # straight line from 0 dg to 180 dg
  add_trace(type = 'scatterpolar',
            r = c(0,4.3,4.3),
            theta = c(0, 180, 360),
            mode = 'lines', 
            line = list(color = 'grey', width = 1)) %>%
  # straight line from 45 dg to 225 dg
  add_trace(type = 'scatterpolar',
            r = c(0,4.3,4.3),
            theta = c(0, 45, 225),
            mode = 'lines', 
            line = list(color = 'grey', width = 1)) %>%
  # straight line from 90 dg to 270 dg
  add_trace(type = 'scatterpolar',
            r = c(0,4.3,4.3),
            theta = c(0, 90, 270),
            mode = 'lines', 
            line = list(color = 'grey', width = 1)) %>%
  # straight line from 135 dg to 315 dg
  add_trace(type = 'scatterpolar',
            r = c(0,4.3,4.3),
            theta = c(0, 135, 315),
            mode = 'lines', 
            line = list(color = 'grey', width = 1)) %>%
  # fill circle of radius 1
  add_trace(type = 'scatterpolar', 
            mode = 'lines', 
            r = 1, 
            theta =seq(0, 360, 0.1),
            line = list(color = 'grey'), 
            fill = 'toself', 
            fillcolor = 'grey', 
            opacity = 0.5) %>%
  layout(
    showlegend = FALSE,
    polar = list(
      angularaxis = list(
        showticklabels = TRUE,
        # remove grid lines and ticks
        showgrid = FALSE,
        ticks = '',
        # if you want the axis to go the other way around
        # direction = 'clockwise',
        tickmode="array",
        tickvals = seq(22.5, 337.5, 45),
        ticktext = LETTERS[1:8]
      ),
      radialaxis = list(
        tickmode="array",
        tickvals = c(0, 1, 2, 3, 4, 5, 6, 7),
        ticktext = c('', "One", "Two", "Three", "Four", "Five", "Six", "Seven")
      )
    )
  )
ggplotly(p)

Выходная диаграмма:

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

Я заметил, что ожидаемый результат, который у вас есть, перечисляет буквы наоборот, как они есть в вашем коде. Если это то, что вы также хотите, просто измените порядок букв, чтобы они соответствовали углам, как этот c("A", "H", "G", "F", "E", "D", "C", "B") (обратный порядок, начиная с A)

15.04.2019
  • Большое спасибо!. Я пытался со своей стороны, но не смог исправить. Как с помощью add_area я могу заполнить серым цветом центр радиуса 1? 16.04.2019
  • Я бы предпочел снова использовать add trace, но опять же может быть более эффективный способ, взгляните на отредактированный ответ. 16.04.2019
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..