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

Как сделать несколько диаграмм на одном графике, например, для разных значений регистратора воды (все столбцы имеют непрерывные данные, без факторов) в R [дубликаты]

Допустим, у меня есть следующий набор данных 1.

Я хочу сделать диаграммы для каждого значения регистратора воды на одном графике. Везде, где я проверял, у людей есть факторная переменная для использования. Однако мне не нужны факторы, у меня есть номер регистратора воды в качестве имени столбца. Я могу сделать это с помощью общей команды boxplot: boxplot(data$colname1, data$colname2, data$colname3, and so on), но как я могу сделать это с лучшей графикой, например, в ggplot2.


  • показать некоторые данные, если вы хотите, чтобы вам помогли 04.03.2016

Ответы:


1

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

d <- data.frame(x=rep(0,8))
d$`Logger 1_Water_Level` <- c(1,2,3,4,5,3,4,5)
d$`Logger 2_Water_Level` <- c(7,9,2,6,8,9,2,3)

Вам нужно изменить набор данных, чтобы получить факторную переменную, которая идентифицирует регистраторы. Предполагая, что у вас есть два регистратора и что данные из регистраторов хранятся в столбцах 2 и 3, вы можете использовать следующий код, чтобы перейти от широкого формата, в котором хранятся ваши данные (т.е. отдельные столбцы для каждого регистратора), к длинному формат, который вам нужен для построения графика с ggplot2 (т. е. один столбец для измерения уровня воды, каждый регистратор идентифицируется номером в столбце с именем Logger)

d_long <- reshape(d, varying=2:3, direction="long", timevar="Logger",v.names="Water_Level", times=1:2)
d_long$Logger <- as.factor(d_long$Logger)

И теперь вы можете построить измерения, используя ggplot2:

p <- ggplot(d_long, aes(x=Logger, y=Water_Level))
p <- p + geom_boxplot()
p
04.03.2016
  • Большое спасибо за ваше время. Я уверен, что это сработает. А вот вариант с расплавом, показанный coffeinjunky, лично для меня намного проще. 07.03.2016

  • 2

    Без фактических данных трудно показать вам точный код, который вам нужно использовать, но, взглянув на этот png, я бы посоветовал вам попробовать что-то из следующего:

    library(reshape2)
    library(ggplot2)
    
    df <- melt(your_data)
    ggplot(df, aes(x=variable, y=value)) + geom_boxplot()
    

    Этот код, вероятно, нуждается в некоторой корректировке. Если это не работает и изменения не очевидны, опубликуйте несколько примеров данных таким образом, чтобы нам было легко их использовать. Данные со снимка экрана подразумевают, что нам нужно вручную копировать и вставлять каждое число, что мало кто захочет делать.

    Чтобы прояснить общую процедуру: melt «складывает» все ваши столбцы друг над другом и добавляет переменную с именем variable, которая ссылается на старое имя столбца. Вы можете передать это ggplot и сказать, что разные значения variable должны быть на оси x, чего вы и хотите. Например, взгляните на women:

    head(women)
      height weight
    1     58    115
    2     59    117
    3     60    120
    4     61    123
    5     62    126
    6     63    129
    
    str(women)
    'data.frame':   15 obs. of  2 variables:
     $ height: num  58 59 60 61 62 63 64 65 66 67 ...
     $ weight: num  115 117 120 123 126 129 132 135 139 142 ...
    

    Вы видите, что women — это кадр данных с 15 наблюдениями и двумя столбцами, height и weight.

    Теперь давайте melt их:

    df <- melt(women)
    
    head(df)
      variable value
    1   height    58
    2   height    59
    3   height    60
    4   height    61
    5   height    62
    6   height    63
    
    str(df)
    'data.frame':   30 obs. of  2 variables:
     $ variable: Factor w/ 2 levels "height","weight": 1 1 1 1 1 1 1 1 1 1 ...
     $ value   : num  58 59 60 61 62 63 64 65 66 67 ...
    

    Теперь вы видите, что в нем 30 наблюдений и два столбца: variable и value. variable определяет старые столбцы.

    Давайте передадим это ggplot:

    ggplot(df, aes(x=variable, y=value)) + geom_boxplot()
    

    дает:

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

    Здесь у вас есть диаграммы для обоих столбцов в исходном наборе данных women.

    04.03.2016
  • Большое спасибо. Извините, я новичок в Stackoverflow, я не понял, как загрузить фиктивный набор данных. Я попробовал процедуру плавления, но что-то не так. Я использовал переменную времени (дата-время) в качестве id.variable (и у меня 42000 наблюдений). Переменная id не реплицировалась после 42000 и показывает NA. (можете ли вы сказать мне, как загрузить фиктивный набор данных) 07.03.2016
  • См., например. stackoverflow.com/ questions/5963269/ , в частности dput может оказаться полезным. 07.03.2016
  • Неважно. На самом деле, я наконец смог это сделать. Я думаю, что функция плавления не могла понять класс POSIXlt моей даты/времени. Но после преобразования данных/времени обратно в факторный класс он смог преобразовать данные в длинную форму. Большое спасибо! Это, безусловно, было полезно. 07.03.2016
  • Новые материалы

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

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

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

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

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

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

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