График Waffle не показывает одну группу

#r #graph #waffle-chart

#r #График #график waffle

Вопрос:

У меня есть следующий график с использованием library(waffle)

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

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

 counts<-c(135.92, 15.98, 14.97, 14.15, 5.82, 11.82, 0.07 )
counts_names<-sprintf("%s (%s)", c("Coal", "Gas", "Wind", "Hydro", "Grid-scalar solar", "Rooftop solar", "Storage systems"), 
                  scales::percent(round(counts/sum(counts), 4)))
names(counts)<-counts_names
Generation_graph<-waffle(counts)  scale_fill_tableau(name=NULL)
  

Как я могу получить свой исходный график с семью группами справа

ОБНОВЛЕНИЕ: читая один из комментариев, я заметил, что включение опции labels позволяет мне сохранить мой исходный график со всеми именами.

 Generation_graph<-waffle(counts)  scale_fill_tableau(name=NULL, labels=counts_names)
  

Ответ №1:

Проблема в том, что значение вашей седьмой категории слишком мало, чтобы отображаться на графике. Последняя группа без маркировки просто отражает «квадраты», добавленные waffle по умолчанию для «заполнения» последнего столбца.

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

 library(waffle)
#> Loading required package: ggplot2
library(ggthemes)

counts<-c(135.92, 15.98, 14.97, 14.15, 5.82, 11.82, 0.07)
counts_names<-sprintf("%s (%s)", c("Coal", "Gas", "Wind", "Hydro", "Grid-scalar solar", "Rooftop solar", "Storage systems"), 
                      scales::percent(round(counts/sum(counts), 4)))
names(counts)<-counts_names
  
  1. Вы можете задать цвета с помощью colors аргумента. В этом случае последняя категория будет отображаться в легенде, но не в графике. Также. В этом случае последний столбец не заполняется.
 waffle(counts, colors = tableau_color_pal()(length(counts)))
  

  1. Вместо использования необработанных данных вы можете использовать ceiling() . При этом ваша последняя категория отражается как на графике, так и в легенде.
 waffle(ceiling(counts), colors = tableau_color_pal()(length(counts)))
  

  1. Наконец, если вы можете использовать последний столбец, который нужно заполнить ceiling() , давайте waffle выберем цвета и проверим с помощью scale_fill_manual :
 waffle(ceiling(counts))   scale_fill_tableau()
  

Ответ №2:

Вы можете использовать scale_fill_manual() , чтобы получить то, что вы ищете

 library(ggthemes)
library(waffle)
counts<-c(135.92, 15.98, 14.97, 14.15, 5.82, 11.82, 0.07 )
counts_names<-sprintf("%s (%s)", c("Coal", "Gas", "Wind", "Hydro", "Grid-scalar solar", "Rooftop solar", "Storage systems"), 
                      scales::percent(round(counts/sum(counts), 4)))
names(counts)<-counts_names
Generation_graph<-waffle(counts)   
  scale_fill_manual(values = c("red", "blue", "green", "purple", "pink", "yellow", "orange", "blue"),
                    labels = counts_names, 
                    drop = TRUE)
  

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