Как сделать вложенную круговую диаграмму в R, где данные внешнего кольца являются подмножеством внутреннего кольца? - PullRequest
0 голосов
/ 01 октября 2018

Аналогичный вопрос был задан, но оставлен без ответа.Мне нужна круговая вложенная круговая диаграмма, которая имеет внешние значения как подмножество внутренних значений.

Например, у меня есть простая таблица данных компакт-дисков, которые я купил в прошлом году, я хочу, чтобы круговая диаграмма показывала количество компакт-дисков с каждого континента, с которого пришла группа, и внешнее кольцо, чтобы показать отдельного человекастраны каждой полосы на конкретном континенте.

PieChart

Данные при наведении на внутренней круговой диаграмме верны, но данные для внешнего кольца вводят в заблуждение.Например, в Германии есть 15 компакт-дисков из 40 европейских, но процент Германии составляет 8,62%.Немецкий% верен по отношению к общим 100%, но по сравнению с 40 европейскими компакт-дисками, купленными в этом году, Германия составляет 37,5%

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

Это образец моего оригинального набора данных:

    Artist   Album  Year    Country Continent
1   Myrath  Legacy  2016    Tunisia Asia
2   Myrath   Sands  2011    Tunisia Asia
3   Orphaned Shalem 2011    Israel  Asia
4   Orphaned Unsung 2018    Israel  Asia

Круговая диаграмма представлена ​​в виде:

output$bandChart <- renderPlotly({



        plot_ly(freefilter() ,labels = ~Country, values = ~AlbumCount,
               showlegend = FALSE
                ) %>%

        add_pie(hole = 0.6,
                textinfo = 'label',
                textposition = 'inside',
                insidetextfont = list(color = '#FFFFFF'),
                marker = list(line = list(color = '#FFFFFF', width = 1)),
                direction = 'clockwise',
                sort = FALSE,
                text = ~paste(Country, AlbumCount),
                hoverinfo = 'text + percent') %>%

        add_pie(freefilter(),labels = ~Continent, values = ~AlbumCount,
                textinfo = 'label',
                textposition = 'inside',
                direction = 'clockwise',
                sort = FALSE,
                name = "Continent Data,
                marker = list(line = list(color = '#FFFFFF', width = 1)),
                domain = list(x = c(.2, 0.8), y = c(0.2, .8))

                        ) %>%

              config (collaborate = FALSE, displaylogo = FALSE ) %>%

             layout(title = "Band Locations",
               xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
               yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
               autosize = FALSE)
    })

Я использую блестящий и скотчне включайте эти части кода.

Спасибо

1 Ответ

0 голосов
/ 01 октября 2018

Звучит так, как будто вы хотите переопределить текст с наведением курсора на свой.Вы можете подойти к этому, указав это самостоятельно и используя это.

library(dplyr)
library(gapminder)

# Example data from gapminder, which happens to have countries and continents
worldpop_share = gapminder %>%
  # Let's just use the last year of data, I think 2007
  filter(year == max(year)) %>%
  # We only need country, continent, and population
  select(country, continent, pop) %>%

  # Make a grouping for the rows related to each continent
  group_by(continent) %>%
  # and calc that row's (country's) share of it's continent's population
  mutate(share_of_cont = pop / sum(pop %>% as.numeric)) %>%
  ungroup()  # This is just to tidy up so our table isn't grouped anymore

Затем используйте что-то подобное в вашем add_pie звонке:

# This could replace the current plotly text, which has plotly calculate the percentage, which seems to be happening for the whole and not at the continent level.
text = ~paste(Country, share_of_cont)

Подробнее здесь: https://plot.ly/r/text-and-annotations/

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