#r #ggplot2 #dplyr
Вопрос:
Я использую набор данных Доминика и анализирую файл softdrink.
Я пытаюсь показать общий объем продаж в каждом магазине.
Ниже приведен мой код.
#########################################################################
################### Graph 1 - Total profit per Store.####################
#########################################################################
# Calculate the total profit per store.
softdrinks %>%
group_by(STORE) %>%
summarise(totalProfit = sum(PROFIT)) -> storeProfit
# to highlight the highest and lowest profit
storeProfit %>%
mutate(color = (min(totalProfit) == totalProfit | max(totalProfit) == totalProfit)) %>%
filter(color == "TRUE")-> minMax
# display sales per each store.
ggplot(data = storeProfit, aes(x = factor(STORE), y = totalProfit))
geom_dotplot(binaxis = "y", fill = "light blue")
geom_dotplot(data = minMax,
binaxis = "y",
aes(x = factor(STORE), y = totalProfit),
fill = "red")
labs(title = "Total softdrink profit per Store", x = "Store", y = "Total Profit (USD$)")
theme(axis.text.x=element_text(angle=90,hjust=1)) # rotate the x axis labels by 90 degrees.
Когда я запускаю код, я получаю график ниже.
Не могли бы вы, пожалуйста, помочь мне понять, почему моя ось x выглядит странно, и помочь мне решить проблему?
Ответ №1:
Может быть, вы подумывали об использовании geom_point вместо geom_dotplot ? Ваша ось дискретна, потому что вы использовали факторную переменную, но на самом деле справа у вас пустое пространство. Возможно, вы могли бы вместо использования двух наборов данных выполнить ggplot на одном и использовать созданную вами переменную цвета для раскрашивания правильных точек.
storeProfit = storeProfit %>%mutate(color = (min(totalProfit) == totalProfit | max(totalProfit) == totalProfit))
ggplot(data = storeProfit, aes(x = factor(STORE), y = totalProfit,fill=color))
geom_dotplot(binaxis = "y", fill = "light blue")
labs(title = "Total softdrink profit per Store", x = "Store", y = "Total Profit (USD$)")
theme(axis.text.x=element_text(angle=90,hjust=1))
scale_fill_manual(c("light blue","red"))
Это лучшее, что я могу придумать без воспроизводимого набора данных
Комментарии:
1. Спасибо вам за ответ. Я изменил график на геометрический график, и ошибка была в порядке.. но данный код не решил проблему. 🙂
2. Обратите внимание, что такого рода данные могут подходить для barplot. Вы можете найти все возможности визуализации, хорошо объясненные в таблице GGplot2, доступной в Интернете