Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot将截止线添加到叠加条形图中,条件:达到阈值_R_Ggplot2_Dplyr_Tidyverse - Fatal编程技术网

R ggplot将截止线添加到叠加条形图中,条件:达到阈值

R ggplot将截止线添加到叠加条形图中,条件:达到阈值,r,ggplot2,dplyr,tidyverse,R,Ggplot2,Dplyr,Tidyverse,我想画一条垂直线,将占据最大市场份额的竞争对手与其他竞争对手分开,比如70%的市场份额。 下面是示例数据 # Example data data<- tibble::tribble( ~CUSTOMER, ~COMPETITOR, ~VALUE, "AAA", "XXX", 123400, "AAA", "YYY", 10000, "AAA", "ZZZ", 80000, "AAA", "YYY",

我想画一条垂直线,将占据最大市场份额的竞争对手与其他竞争对手分开,比如70%的市场份额。 下面是示例数据

# Example data

data<- tibble::tribble(
  ~CUSTOMER, ~COMPETITOR, ~VALUE,
      "AAA",    "XXX",  123400,
      "AAA",    "YYY",   10000,
      "AAA",    "ZZZ",   80000,
      "AAA",    "YYY",   60000,
      "BBB",    "XXX",  110000,
      "BBB",    "YYY",   20000,
      "BBB",    "ZZZ",   10000,
      "BBB",    "YYY",   80000,
      "CCC",    "YYY",   30000,
      "CCC",    "ZZZ",   12000,
      "DDD",    "YYY",    7000,
      "CCC",    "VVV",   10000)

如何添加到这个堆叠的条形图中,这是一条将竞争对手划分为门槛的线,比如说70%基于COMP_PARETO列,该列包含累计销售额的%。如果x轴是数字的,但它们是分类的,这将很容易

@JackekKotowski,你的代码有问题。不能复制它。获取错误,
在mutate\u impl(.data,dots)中出错:求值错误:未找到对象“total\u VALUE”。
看起来像变量,
total\u VALUE
在给定代码中未定义。@JacekKotowski,还有,
col\u competitors
unit\u mln()
;前者是您试图添加到绘图中的内容,而后者是某个函数-来自软件包或自定义?您是否尝试添加了
geom_hline
,但由于某种原因,它不起作用?因为x是离散的不会有什么区别。@camille如果x轴是分类的,而不是数字的,我不知道如何添加hline。试着像x是数字一样添加hline。它应该以同样的方式工作,尝试也没有坏处
library (tidyverse) 
   df_COMP<- data %>%                          # totals and pareto for COMPETITOR
      group_by(COMPETITOR) %>%      
      summarise(COMP_VALUE=sum(VALUE)) %>%                                 
      arrange(desc(COMP_VALUE)) %>% 
      mutate(COMP_PARETO=cumsum(COMP_VALUE)/total_VALUE) %>%  
      ungroup()
df_COMP %>% 
  ggplot(aes(x = fct_reorder(COMPETITOR, -COMP_VALUE), 
                               y = COMP_VALUE)) + 
  geom_col(alpha=0.4, aes(fill=COMPETITOR), col = "darkgray", show.legend = F)+
  ggtitle(" ")+
  theme_bw(base_size = 11)+ col_competitors  +
  theme(axis.text.x = element_text(angle = 90, hjust=1, vjust=0.5, size=10),
        axis.title=element_blank(),
        axis.ticks=element_blank())+
  scale_y_continuous(labels = function(n){unit_mln(n)}, 
                     sec.axis = sec_axis(~. / sum(df_COMP$COMP_VALUE), labels = scales::percent))+
  scale_x_discrete()+
  geom_text(aes(label = unit_mln(COMP_VALUE)), size = 3, position = position_stack(vjust = 0.5))