提问人:Kiki Liu 提问时间:8/4/2023 最后编辑:stefanKiki Liu 更新时间:8/4/2023 访问量:22
使用 geom_text 为条形图创建数据标签
using geom_text to create data labels for bar chart
问:
我正在使用 ggplot 2 中的“钻石”数据集进行练习。我正在尝试制作条形图,以演示每个颜色类别的平均价格:
这是我写的代码:
ggplot(data=diamonds)+
geom_bar(mapping=aes(x=color,y=price),
fun="mean",stat="summary",fill="yellow")+
geom_text(
aes(label=scales::comma(
round(mean(price),digits=3)
),
x=color,y=price),
stat="summary",size=3,
vjust=-1)
此代码生成的可视化效果如下所示: 我遇到的问题与数据标签有关:
- 每个条形中的数据标签是相同的。这显然是不正确的;
- 为什么我的函数“digitals=3”不起作用?为什么无法更改数据标签中显示的位数?
我在网上搜索了可能的答案,但找不到一个好的解决方案
答:
1赞
stefan
8/4/2023
#1
第一个问题是,使用 u 计算 的总体平均值。要获得计算的平均值,您必须使用 。这是一个变量,它包含引擎盖下计算的值。此值会自动映射到美学上。但是,要将其用于 我们必须包装以访问计算值。mean(price)
price
color
stat_summary
label = after_stat(y)
y
stat_summary
y
label
after_stat
其次,问题在于您包装在其中将使用默认值再次舍入已经 ed 的值。为了解决这个问题,我建议使用 的参数,例如将其设置为四舍五入到小数点后三位。round
scales::comma
round
accuracy=1
accuracy
scales::comma
.001
library(ggplot2)
ggplot(data = diamonds, aes(x = color, y = price)) +
geom_bar(
fun = "mean", stat = "summary", fill = "yellow"
) +
geom_text(
aes(
label = after_stat(scales::comma(y, accuracy = .001))
),
fun = "mean",
stat = "summary",
size = 3,
vjust = -1
)
评论