Вафельный график не показывает одну группу

У меня есть следующий график с использованием 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)

person Eve Chanatasig    schedule 30.10.2020    source источник


Ответы (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)

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

person Daniel Jachetta    schedule 30.10.2020

Проблема в том, что значение вашей седьмой категории слишком мало, чтобы отобразиться на графике. Последняя немаркированная группа просто отражает квадраты, добавленные 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()

person stefan    schedule 30.10.2020