在R中绘制不同颜色的累积直方图

在R中绘制不同颜色的累积直方图,r,graph,histogram,R,Graph,Histogram,我有一个大数据集(800000多个数据点),其中包含5000多家银行提供的贷款信息。我试图将发放贷款最多的前N家银行发放的贷款数量与其他银行加在一起进行比较。为此,我制作了数据框banks,它按发放贷款的数量降序排列。我还添加了一个列,其中列出了发放贷款的相对累计金额。我能画出一个图,但我试图画一个柱状图,其中x轴是从1到10的N个数字,y轴是前N家银行发放的贷款的百分比。每个条,将被分割成不同的颜色。例如,第一个栏是一种颜色,仅包括第一个栏的累积值,第二个栏是前两个栏的累积值,有两种颜色:从第

我有一个大数据集(800000多个数据点),其中包含5000多家银行提供的贷款信息。我试图将发放贷款最多的前N家银行发放的贷款数量与其他银行加在一起进行比较。为此,我制作了数据框
banks
,它按发放贷款的数量降序排列。我还添加了一个列,其中列出了发放贷款的相对累计金额。我能画出一个图,但我试图画一个柱状图,其中x轴是从1到10的N个数字,y轴是前N家银行发放的贷款的百分比。每个条,将被分割成不同的颜色。例如,第一个栏是一种颜色,仅包括第一个栏的累积值,第二个栏是前两个栏的累积值,有两种颜色:从第一个栏开始,每个栏一种颜色

作为一个具体的例子,假设我有一套100笔贷款,前五大银行分别发放了20、14、12、12、10笔贷款

那么N从1到5的曲线图应如下所示:

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

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

我认为这并不难,但我对使用R完全是新手,所以我用Excel和paint制作了这个柱状图。非常感谢你

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

结构(列表)(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”),贷款=c(20,14,12,12,10,4,3, 3,3,3,3,3,3,3,1),class=“data.frame”,row.names=c(NA, -16L))

尝试以下代码

您的数据称为
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')
库(dplyr)
N(0)
for(1:N中的i){
最高b%
绑定行(绑定列(topn=rep(i,i),head(bnk,i)))
}
#所需图形需要方向相反的因子
top_b$银行名称%
ggplot(aes(x=topn,y=LOANTS,fill=Bank.Name))+
几何图形栏(stat='identity')

在R中创建一个简单的数据示例,并与
dput()
共享,我相信很多人都会帮助你。可能重复@sindri_baldur我在帖子中添加了示例数据框,其中
dput()
@jay.sf几乎是重复的,区别在于该问题涉及不同的群体,虽然我只有一个组,但每个条对应于同一数据集中考虑的前N个银行。这可以通过该帖子中基于ggplot的答案来解决。你不需要先融化数据,因为你的数据已经处于正确的状态。为了让我们明白为什么它不是其他类似问题的翻版,我们需要看看你说的代码没有起作用