gpt4 book ai didi

r - 如何使 ggplot2 在此图中排除零值?

转载 作者:行者123 更新时间:2023-12-02 00:55:35 27 4
gpt4 key购买 nike

我有以下 R运行在 RStudio 中的代码,输出也如下所示:

df2  %>%
ggplot(aes(
x = JANUARY,
y = value,
fill = JANUARY,
group = year
)) +
geom_col(
position = position_dodge(.65),
width = .5
) +
geom_text(aes(
y = value + max(value) * .03,
label = round(value * 100) %>% str_c('%')
),
position = position_dodge(.65)
) +
geom_text(aes(
y = y_pos,
label = str_remove(year, 'X')
),
color = 'white',
angle = 90,
fontface = 'bold',
position = position_dodge(0.65)
) +
scale_y_continuous(
breaks = seq(0, .9, .1),
labels = function(x) round(x * 100) %>% str_c('%')
) +
scale_fill_manual(values = c(
rgb(47, 85, 151, maxColorValue = 255),
rgb(84, 130, 53, maxColorValue = 255),
rgb(244, 177, 131, maxColorValue = 255),
rgb(112, 48, 160, maxColorValue = 255),
rgb(90, 48, 100, maxColorValue = 255)
)) +
theme(
plot.title = element_text(hjust = .5),
panel.background = element_blank(),
panel.grid.major.y = element_line(color = rgb(.9, .9, .9)),
axis.ticks = element_blank(),
legend.position = 'none'
) +
xlab('') +
ylab('') +
ggtitle('Month of JANUARY (as at 01 January)')

输出是:

column chart

如您所见,“D-Final”下的值“0%”导致条形内的标签在 x-axis 下方消失。 .

我想删除“0%”并将标签放回条内的位置。如何修改我的代码以实现这一目标?

添加了数据 ( df2 ):
JANUARY year  value y_pos
<fct> <chr> <dbl> <dbl>
1 D-150 X2016 0.26 0.12
2 D-90 X2016 0.49 0.21
3 D-60 X2016 0.63 0.265
4 D-30 X2016 0.73 0.325
5 D-Final X2016 0.81 0
6 D-150 X2017 0.28 0.12
7 D-90 X2017 0.5 0.21
8 D-60 X2017 0.64 0.265
9 D-30 X2017 0.77 0.325
10 D-Final X2017 0.82 0
11 D-150 X2018 0.33 0.12
12 D-90 X2018 0.51 0.21
13 D-60 X2018 0.62 0.265
14 D-30 X2018 0.77 0.325
15 D-Final X2018 0.78 0
16 D-150 X2019 0.24 0.12
17 D-90 X2019 0.42 0.21
18 D-60 X2019 0.53 0.265
19 D-30 X2019 0.65 0.325
20 D-Final X2019 0 0

最佳答案

至少在这一点上,它并不是真正的 0%。标签的位置由 y_pos 预定义和给出。 ,所以你可以简单地自己改变它,例如,

df2$y_pos[df2$JANUARY == "D-Final"] <- 0.4

至于删除 0%,第一行可以替换为
df2 %>% filter(value > 0.01) %>% 

这给

enter image description here

显然 y_pos被定义为
df2 %>% group_by(JANUARY) %>% mutate(y_pos = min(value) / 2)

因此,为了避免这个问题,在这种情况下(因为组的所有其他值都相似),您可以改为使用
df2 %>% group_by(JANUARY) %>% mutate(y_pos = max(value) / 2)

关于r - 如何使 ggplot2 在此图中排除零值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54515901/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com