Nano Hash - криптовалюты, майнинг, программирование

Построение кумулятивной гистограммы с разными цветами в R

У меня есть большой набор данных (более 800 000 точек данных) с информацией о кредитах, выданных более чем 5000 банками. Я пытаюсь сравнить количество кредитов, выданных N ведущими банками, которые выдают больше всего кредитов, с остальными банками вместе взятыми. Для этого я сделал фрейм данных banks, который отсортирован по количеству выданных кредитов в порядке убывания. Я также добавил столбец с относительной совокупной суммой выданных кредитов. Я смог построить график этого, но я пытаюсь сделать гистограмму, где ось X — это N число от 1 до 10, а ось Y — это процент кредитов, выданных N ведущими банками. Каждая полоса будет разделена на разные цвета. Например, первая полоса будет одного цвета и будет включать совокупные значения только первого банка, вторая полоса будет представлять собой совокупную сумму двух верхних банков и будет иметь два цвета: по одному для каждого банка, начиная с верхнего. банк.

В качестве конкретного примера предположим, что у меня есть набор из 100 кредитов, где 5 крупнейших банков выдали по 20, 14, 12, 12, 10 кредитов каждый.

Тогда график должен быть следующим для N, изменяющегося от 1 до 5: //i.stack.imgur.com/TC78p.png" alt="введите здесь описание изображения">

И, по возможности, были бы легенды о том, какой банк соответствует каждому цвету.

Я пытался использовать ggplot, но это не позволяет мне определять оси так, как я хочу.

Я думаю, это не так сложно, но я полный новичок в использовании R, поэтому я сделал эту гистограмму с помощью Excel и Paint. Большое спасибо!

Я сделал следующий кадр тестовых данных в соответствии с предложением @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))

14.10.2019

  • Создайте простой пример своих данных в R и поделитесь им с dput(), и я уверен, что многие люди вам помогут. 14.10.2019
  • Возможный дубликат графика с накоплением в R 14.10.2019
  • @sindri_baldur Я добавил образец данных в пост с dput() @jay.sf Почти дубликат, разница в том, что этот вопрос касается разных групп, тогда как у меня есть только одна группа, каждая полоса соответствует N верхним банкам, рассматриваемым из тот же набор данных. 14.10.2019
  • Это можно решить с помощью ответа на основе ggplot в этом сообщении. Вам просто не нужно сначала плавить данные, так как ваши уже имеют правильную форму. Чтобы понять, почему это не повторение других подобных вопросов, нам нужно увидеть код, который, по вашим словам, не работает. 14.10.2019

Ответы:


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')
14.10.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..