【问题标题】:Plotting cumulative histogram with different colors in R在R中绘制不同颜色的累积直方图
【发布时间】:2019-10-14 08:35:15
【问题描述】:

我有一个大型数据集(800,000 多个数据点),其中包含有关 5,000 多家银行提供的贷款的信息。我试图将发放最多贷款的前 N ​​家银行发放的贷款数量与其他银行一起发放。为此,我制作了数据框banks,它按发放的贷款数量降序排列。我还添加了一个列,其中包含已支付的相对累积贷款总额。我能够对此进行绘图,但我正在尝试制作一个直方图,其中 x 轴是 N 一个从 1 到 10 的数字,y 轴是前 N 个银行发放的贷款的百分比。每个条,将被分成不同的颜色。例如,第一个条将是一种颜色,仅包括第一个库的累积值,第二个条将是前 2 个库的累积总和,并且将有两种颜色:每个库一个,从顶部开始银行。

作为一个具体的例子,假设我有一组 100 笔贷款,其中前 5 家银行分别发放了 20、14、12、12、10 笔贷款。

那么对于 N 从 1 到 5,绘图应该如下所示:

而且,如果可能的话,它会有说明每种颜色对应哪个银行的图例。

我尝试使用ggplot,但它不允许我以我想要的特定方式定义轴。

我认为这并不难,但我完全是使用 R 的新手,所以我使用 Excel 和绘图制作了这个直方图。非常感谢!

我根据@sindri_baldur 对示例图的建议使用dput() 制作了以下测试数据框:

structure(list(Bank.Name = structure(1:16, .Label = c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P"), class = "factor"), Loans = c(20, 14, 12, 12, 10, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1)), class = "data.frame", row.names = c(NA, -16L))

【问题讨论】:

  • 在 R 中创建一个简单的数据示例并与dput() 分享,我相信很多人会帮助你。
  • Stacked Bar Plot in R的可能重复
  • @sindri_baldur 我用dput()@jay.sf 将示例数据框添加到帖子中几乎是重复的,不同之处在于该问题涉及不同的组,而我只有一个组,每个组bar 对应于同一数据集中考虑的前 N ​​个银行。
  • 这可以通过该帖子中基于 ggplot 的答案来解决。您只是不需要先融化数据,因为您的数据已经处于正确的形状。为了让我们了解为什么它不是其他类似问题的欺骗,我们需要查看您说没有工作的代码

标签: r graph histogram


【解决方案1】:

试试下面的代码。

您的数据在此处称为bnk

library(dplyr)
N <- 5
# create empty tibble
top_b <- tibble(topn=0, Bank.Name = '', Loans = 0) %>% 
  filter(topn>0)

for (i in 1:N) {
  top_b <- top_b %>% 
    bind_rows( bind_cols(topn = rep(i, i), head(bnk , i)))

}
# factor with opposite direction needed for graph you want
top_b$Bank.Name  <- factor(top_b$Bank.Name, 
                            levels = unique(top_b$Bank.Name)[N:1])

top_b %>% 
  ggplot(aes(x=topn, y=Loans, fill = Bank.Name))+
  geom_bar(stat = 'identity')

【讨论】:

    猜你喜欢
    • 2021-06-02
    • 2016-12-13
    • 1970-01-01
    • 2015-10-01
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    相关资源
    最近更新 更多