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

Обратный порядок сложенных стержней

Я создаю столбчатую диаграмму с накоплением, используя ggplot следующим образом:

plot_df <- df[!is.na(df$levels), ] 
ggplot(plot_df, aes(group)) + geom_bar(aes(fill = levels), position = "fill")

Это дает мне что-то вроде этого:

введите описание изображения здесь

Как изменить порядок самих столбцов, так чтобы уровень 1 находился внизу, а уровень 5 - вверху каждого столбца?

Я видел ряд вопросов по этому поводу (например, Как управлять упорядочением столбчатой ​​диаграммы с накоплением с помощью идентификатора на ggplot2), и общее решение, похоже, состоит в том, чтобы переупорядочить фрейм данных по этому уровню, как то, что ggplot использует для определения порядка

Итак, я попытался переупорядочить с помощью dplyr:

plot_df <- df[!is.na(df$levels), ] %>% arrange(desc(levels))

Однако сюжет выходит все тот же. Также, похоже, не имеет значения, располагаю ли я по возрастанию или по убыванию

Вот воспроизводимый пример:

group <- c(1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4)
levels <- c("1","1","1","1","2","2","2","2","3","3","3","3","4","4","4","4","5","5","5","5","1","1","1","1")
plot_df <- data.frame(group, levels)

ggplot(plot_df, aes(group)) + geom_bar(aes(fill = levels), position = "fill")

  • Порядок наблюдений не имеет смысла, но порядок уровней факторов имеет значение. Также, REPEX. 10.03.2017
  • да, я также пробовал изменить порядок уровней факторов с помощью levels(plot_df$levels) <- c("1", "2", "3", "4", "5") (и обратный порядок), но это не меняет порядок на графике 10.03.2017
  • Также добавлен пример данных 10.03.2017
  • plot_df %>% mutate(levels = factor(levels, levels = 5:1)) %>% ggplot(aes(group, fill = levels)) + geom_bar(position = "fill") или просто ggplot(plot_df, aes(group)) + geom_bar(aes(fill = levels), position = position_fill(reverse = TRUE)) 10.03.2017

Ответы:


1

Примечания к выпуску ggplot2 версии 2.2.0 на Полосы стека предлагают:

Если вы хотите складывать в обратном порядке, попробуйте forcats::fct_rev()

library(ggplot2)   # version 2.2.1 used    
plot_df <- data.frame(group = rep(1:4, 6),
                      levels = factor(c(rep(1:5, each = 4), rep(1, 4))))
ggplot(plot_df, aes(group, fill = forcats::fct_rev(levels))) + 
  geom_bar(position = "fill")

Обратные уровни

Это исходный сюжет:

ggplot(plot_df, aes(group, fill = levels)) + 
  geom_bar(position = "fill")

Оригинальный сюжет

Или, используя position_fill(reverse = TRUE), как предлагает alistaire в его комментарии:

ggplot(plot_df, aes(group, fill = levels)) + 
  geom_bar(position = position_fill(reverse = TRUE))

введите описание изображения здесь

Обратите внимание, что уровни (цвета) в легенде расположены не в том же порядке, что и в столбцах, расположенных друг над другом.

10.03.2017
  • position_fill(reverse = TRUE) нормализует столбцы, используйте position_stack(reverse = TRUE), если не хотите нормализовать столбцы. 10.09.2019

  • 2

    Альтернативой является изменение порядка фактора как такового, предполагая, что фактор называется уровнями: уровни = упорядоченные (уровни, уровни = c (5,4,3,2,1)). для получения дополнительной информации: http://www.cookbook-r.com/Manipulating_data/Changing_the_fvels_data/Changing_the_fvels_ / а>

    05.03.2021
    Новые материалы

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

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

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

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

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

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

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