【发布时间】:2019-12-14 14:03:30
【问题描述】:
我经常创建如下图,其中轴刻度/标签表示累积总和。这一切都很好,但需要我先创建 tibble,然后才能使用 scale_y_continous(breaks=my_df$cumsum) 解决新的中断。
library(tidyverse)
my_df <- tibble::tribble(
~group, ~value,
"a", 10,
"b", 20,
"c", 60
) %>%
mutate(group=as_factor(group)) %>%
arrange(desc(group)) %>%
mutate(value_cum=cumsum(value))
my_df
#> # A tibble: 3 x 3
#> group value value_cum
#> <fct> <dbl> <dbl>
#> 1 c 60 60
#> 2 b 20 80
#> 3 a 10 90
my_df %>%
ggplot()+
geom_bar(aes(fill=group,
y=value,
x=1),
stat="identity",
position=position_stack())+
scale_y_continuous(breaks=my_df$value_cum)+
coord_flip()+
theme(axis.text.y = element_blank())
为了让事情更顺利一点,我想知道是否有一种方法可以直接“即时”处理新创建的value_cum 变量,而无需之前保存数据帧/小标题。希望下面的失败尝试清楚地表明了我对什么感兴趣。问题基本上是我如何处理输入 ggplot 但之前没有保存的值。
非常感谢。
tibble::tribble(
~group, ~value,
"a", 10,
"b", 20,
"c", 60) %>%
mutate(group=as_factor(group)) %>%
arrange(desc(group)) %>%
mutate(value_cum=cumsum(value)) %>%
ggplot()+
geom_bar(aes(fill=group,
y=value,
x=1),
stat="identity",
position=position_stack()) +
scale_y_continuous(breaks=.$value_cum))+ #does not work
coord_flip()+
theme(axis.text.y = element_blank())
由reprex package (v0.3.0) 于 2019 年 12 月 14 日创建
【问题讨论】:
-
如果我将
.$value_cum更改为.data$value_cum,它对我有用 -
@AHart 非常感谢。不幸的是,这对我不起作用。我只是得到一个空白轴(没有刻度或标签)。我正在使用 ggplot2 包版本“3.2.1.9000”。
-
抱歉没听清楚!我在下面添加了一个答案,使用大括号来封装情节。我希望这有效!
标签: r ggplot2 axis-labels