#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
- Вы можете задать цвета с помощью
colors
аргумента. В этом случае последняя категория будет отображаться в легенде, но не в графике. Также. В этом случае последний столбец не заполняется.
waffle(counts, colors = tableau_color_pal()(length(counts)))
- Вместо использования необработанных данных вы можете использовать
ceiling()
. При этом ваша последняя категория отражается как на графике, так и в легенде.
waffle(ceiling(counts), colors = tableau_color_pal()(length(counts)))
- Наконец, если вы можете использовать последний столбец, который нужно заполнить
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)