【问题标题】:R: How to Plot two columns comparative histogram in single plot?R:如何在单个图中绘制两列比较直方图?
【发布时间】:2020-02-27 06:33:34
【问题描述】:

R:如何在单个图中绘制两列比较直方图?

due_vs_prom <- factor( c(unique(inv$Due_Bin)),levels = c("early","<=5","<=30","<=10","<=50",">50"))
due_counts <- inv %>% group_by(Due_Bin) %>% summarize(count = n())
prom_counts <- inv %>% group_by(Prom_Bin) %>% summarize(count = n())

due_vs_prom <- data.frame(due_vs_prom , due_counts , prom_counts )

plot_due_vs_prom <- plot_ly(due_vs_prom, y = ~due_counts , x = ~ (prom_counts), type = 'bar', name = 'Due_Bin') %>%
  add_trace(x = ~due_counts, name = 'Late Bin') %>%
  layout(xaxis = list(title = 'Count'), barmode = 'group')

数据集喜欢:

Promise_Bin             Due_Bin

early                   early             
early                   >50
early                   >50
>50                     >50
>50                     >50
<=50                    <=50
early                   early
early                   early
<=5                     <50
<=5                     <=5
<=30                    <=30
early                   early
<=30                    >50
<=30                    <=30                    
<=10                    <=10

预期情节:

【问题讨论】:

  • 请编辑您的问题以解释当前代码有什么问题,它会生成什么?

标签: r ggplot2 plot charts plotly


【解决方案1】:

您可以将数据框重塑为更长的格式(此处使用来自tidyr 包的pivot_longer),按“Bin”和不同的“类别”分组以计算它们中的每一个,最后使用geom_col 绘制它:

library(dplyr)
library(tidyr)
library(ggplot2)
df %>% pivot_longer(everything(),names_to = "var",values_to = "val") %>% 
  group_by(var,val) %>% count() %>%
  ggplot(aes(x = val, y = n, fill = var))+
  geom_col(position = position_dodge())

它回答了你的问题吗?


可重现的数据

structure(list(Promise_Bin = c("early", "early", "early", ">50", 
">50", "<=50", "early", "early", "<=5", "<=5", "<=30", "early", 
"<=30", "<=30", "<=10"), Due_Bin = c("early", ">50", ">50", ">50", 
">50", "<=50", "early", "early", "<50", "<=5", "<=30", "early", 
">50", "<=30", "<=10")), row.names = c(NA, -15L), class = c("data.table", 
"data.frame"))

【讨论】:

  • 也可以用count(var, val) %&gt;%代替group_by(var, val) %&gt;% count() %&gt;%
  • 是的,你说得对,它也有效;)。我不知道这种使用count 的方式。谢谢 ;)。现在,我先发现group_by 更明确,然后是count,但我想这只是我的用途。
猜你喜欢
  • 1970-01-01
  • 2011-04-02
  • 1970-01-01
  • 2023-02-07
  • 1970-01-01
  • 2016-11-23
  • 2021-10-29
相关资源
最近更新 更多