R 为什么堆叠条形图与表中的值不匹配?
我有一个数据集,其中包含城市以及这些城市中用于外出的特定物品的价格(例如出租车、饮料、晚餐等)-数据集可在以下位置找到: 我计算了派对之夜和约会之夜的总费用:R 为什么堆叠条形图与表中的值不匹配?,r,ggplot2,bar-chart,tidyverse,stacked-chart,R,Ggplot2,Bar Chart,Tidyverse,Stacked Chart,我有一个数据集,其中包含城市以及这些城市中用于外出的特定物品的价格(例如出租车、饮料、晚餐等)-数据集可在以下位置找到: 我计算了派对之夜和约会之夜的总费用: CostNightPrepared <- CostNight %>% group_by(City, Category) %>% mutate(TotalCost = sum(Cost, na.rm = TRUE))%>% arrange(desc(Category), TotalCost)
CostNightPrepared <- CostNight %>%
group_by(City, Category) %>%
mutate(TotalCost = sum(Cost, na.rm = TRUE))%>%
arrange(desc(Category), TotalCost)
costname%
组别(城市、类别)%>%
变异(总成本=总和(成本,na.rm=真))%>%
安排(描述(类别)、总成本)
要将其绘制出来:
Visual <- ggplot(CostNightPrepared, aes(TotalCost, fct_rev(fct_reorder(City, TotalCost)), fill=Category)) +
geom_col(position = "stack") +
geom_text(aes(label = round(TotalCost, 1)), position = position_dodge(1))
Visual我想你想要的是summary
而不是mutate
。通过使用mutate
,您可以获得每一行的城市/类别总数,然后将这些行中的每一行输入ggplot2。
您确实希望每个城市/类别组合有一行,这就是Summary生成的结果
可复制示例:
mtcars %>%
head() %>%
group_by(carb, gear) %>%
mutate(total_wt = sum(wt)) %>%
ungroup() -> mtcars_summary
#mtcars_summary
## A tibble: 6 x 12
# mpg cyl disp hp drat wt qsec vs am gear carb total_wt
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 21 6 160 110 3.9 2.62 16.5 0 1 4 4 5.50
#2 21 6 160 110 3.9 2.88 17.0 0 1 4 4 5.50
#3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1 2.32
#4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1 6.68
#5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2 3.44
#6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1 6.68
如果我们将mutate
替换为summary
,我们将得到更多您所期望的,即输入到条形图中的输入不会对原始数据中的每个元素重复:
#mtcars_summary
## A tibble: 4 x 3
# carb gear total_wt
# <dbl> <dbl> <dbl>
#1 1 3 6.68
#2 1 4 2.32
#3 2 3 3.44
#4 4 4 5.50
#mtcars#总结
##一个tibble:4x3
#carb齿轮总重量
#
#1 1 3 6.68
#2 1 4 2.32
#3 2 3 3.44
#4 4 4 5.50
如果geom\u col
具有位置堆栈,则必须具有geom\u text
。立场必须一致。我认为我的问题可能听起来有误导性。问题不在于列末尾的黑色数字!(这样做只是为了显示列的精确值)。问题是列与X轴上的数字不匹配,但仍然不正确?在复制的示例中,您仍然有例如6.7作为值,但该列在X轴上通过了7.5标记。我使用了“summary()”函数而不是“mutate()”,它确实在X轴上给了我一个更接近的结果,但它仍然不正确-列的值与X轴的值不匹配6.7是3档部分的和,2.3是4档部分的和,6.7+2.3=9。在堆叠条形图中,总计将是组件的总和?您是否希望在文本中显示累计总和?您是否希望所有条形图都像减淡版一样从基线开始?为了澄清,您是希望修正文本,使其显示与累积x位置相关的累积总数,还是希望条形图不堆叠,以便每个条形图仅与其自身值一样长?(你已经完成了第二个版本的闪避——也许你想让条形图重叠?)也许你想这样:试试ggplot(CostNightPrepared%>%arrange(Category),…
或ggplot(CostNightPrepared%>%arrange(desc(Category)),…
ggplot(mtcars_summary, aes(total_wt,
carb %>% as_factor %>% fct_reorder(total_wt),
fill = as.character(gear))) +
geom_col(position = "stack") +
geom_text(aes(label = round(total_wt, 1)), position = position_dodge(1))
#mtcars_summary
## A tibble: 4 x 3
# carb gear total_wt
# <dbl> <dbl> <dbl>
#1 1 3 6.68
#2 1 4 2.32
#3 2 3 3.44
#4 4 4 5.50