У меня есть барплот ggplot с facet_grid
, который до сегодняшнего дня работал нормально.Я понятия не имею, почему легенда не то же самое, что я имел раньше.Теперь вместо 4 Статусов у меня их много, как показано на рисунке.
Код для создания кадра данных:
df <- structure(list(Business = c("B", "B", "B", "K", "K", "K", "K",
"N", "N", "N", "N", "N", "O", "O", "P", "P", "P", "P", "P", "P",
"W", "W", "W"), Status = structure(c(1L, 2L, 3L, 1L, 2L, 3L,
4L, 3L, 1L, 2L, 3L, 4L, 2L, 3L, 1L, 2L, 3L, 4L, 2L, 3L, 1L, 2L,
3L), .Label = c("Cancelled", "Closed", "In SAP", "Open"), class = "factor"),
`Status Count` = c(5L, 22L, 174L, 40L, 65L, 551L, 4L, 36L,
2L, 4L, 43L, 5L, 10L, 4L, 22L, 132L, 394L, 6L, 2L, 5L, 6L,
66L, 106L), Percentage = c(2.49, 11, 87, 6.06, 10, 83, 1,
100, 3.7, 7, 80, 9, 71, 29, 3.97, 24, 71, 1, 29, 71, 3.37,
37, 60), tot = c(75L, 301L, 1313L, 75L, 301L, 1313L, 15L,
1313L, 75L, 301L, 1313L, 15L, 301L, 1313L, 75L, 301L, 1313L,
15L, 301L, 1313L, 75L, 301L, 1313L), business_per = c(4,
18, 77, 4, 18, 77, 0.88, 1, 77, 4, 18, 0.88, 77, 1, 18, 77,
4, 0.88, 18, 77, 1, 18, 77)), .Names = c("Business", "Status",
"Status Count", "Percentage", "tot", "business_per"), row.names = c(NA,
-23L), class = c("tbl_df", "tbl", "data.frame"))
#create the legend
MStatus=paste(df$Status,"(",df$tot,")",df$business_per,"%")
Сюжет:
ggplot(df, aes(fill=`MStatus`, y=`Status Count`, x=Status, color=factor(Status))) +
geom_bar(position=position_dodge(width = 2), stat="identity") +
facet_grid(~Business, labeller = labeller(Business=label_wrap_gen(12))) +
geom_text(size=4, aes(label=paste(Percentage,"%"), vjust = -0.5)) +
scale_color_discrete(guide=FALSE) + # removes the legend for factor(Status)
scale_x_discrete(breaks = NULL) + #turn off vertical grid lines and removed the axis x label
theme(axis.text.x = element_text(angle=90, hjust=1))
Это сюжет и легенда, которую я получаю:
Это легенда, которую я ожидаю(цифры не верны, важен только стиль)
Редактировать 1:
Я создаюследующий кадр данных, следуя тем же шагам, и легенда, если все в порядке.Единственное отличие, которое я вижу здесь, это только количество записей, которое не должно вызывать проблем.Это ошибка в функции?
df <- structure(list(Business = c("B", "B", "B", "K", "K", "K", "K",
"N", "N", "N", "N", "N", "O", "O", "P", "P", "P", "P", "P", "P",
"W", "W", "W"), Status = structure(c(1L, 2L, 3L, 1L, 2L, 3L,
4L, 3L, 1L, 2L, 3L, 4L, 2L, 3L, 1L, 2L, 3L, 4L, 2L, 3L, 1L, 2L,
3L), .Label = c("Cancelled", "Closed", "In SAP", "Open"), class = "factor"),
`Status Count` = c(5L, 22L, 174L, 40L, 65L, 551L, 4L, 36L,
2L, 4L, 43L, 5L, 10L, 4L, 22L, 132L, 394L, 6L, 2L, 5L, 6L,
66L, 106L), Percentage = c(2.49, 11, 87, 6.06, 10, 83, 1,
100, 3.7, 7, 80, 9, 71, 29, 3.97, 24, 71, 1, 29, 71, 3.37,
37, 60), tot = c(75L, 301L, 1313L, 75L, 301L, 1313L, 15L,
1313L, 75L, 301L, 1313L, 15L, 301L, 1313L, 75L, 301L, 1313L,
15L, 301L, 1313L, 75L, 301L, 1313L), business_per = c(4,
18, 77, 4, 18, 77, 0.88, 1, 77, 4, 18, 0.88, 77, 1, 18, 77,
4, 0.88, 18, 77, 1, 18, 77)), .Names = c("Business", "Status",
"Status Count", "Percentage", "tot", "business_per"), row.names = c(NA,
-23L), class = c("tbl_df", "tbl", "data.frame"))
#create the legend
MStatus=paste(df$Status,"(",df$tot,")",df$business_per,"%")
, а вот диаграмма, созданная с новым фреймом данных: