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

Как создать geom_boxplot с большим количеством непрерывных x-переменных

У меня есть фрейм данных, который содержит числовые ячейки по оси X и непрерывные данные по оси Y по нескольким категориям. Первоначально я создал коробчатую диаграмму, сделав бины по оси X «факторами» и выполнив коробчатую диаграмму расплавленных данных. Воспроизводимые данные:

x <- seq(1,10,by=1)
y1 <- rnorm(10, mean=3)
y2 <- rnorm(10, mean=10)
y3<- rnorm(10, mean=1)
y4<- rnorm(10, mean=8)
y5<- rnorm(10, mean=12)
df <- data.frame(x,y1,y2,y3,y4,y5)
df.m <- melt(df, id="x")

Мой код для создания данных оси x как фактор:

df.m $ x ‹- as.factor (df.m $ x)

Мой график ggplot:

ggplot(df.m, aes(x=x, y=value))+
 geom_boxplot(notch=FALSE, outlier.shape=NA, fill="red", alpha=0.1)+
 theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

Результирующий сюжет: Результирующий сюжет:

Проблема в том, что я не могу использовать числовой интервал по оси x, потому что ось x классифицируется как фактор, имеющий равный интервал. Я хочу иметь возможность использовать что-то вроде scale_x_continuous для управления разрывами осей и интервалом, скажем, с интервалом 2, а не блок-схемой каждые 1, но когда я пытаюсь построить данные с осью x "as.numeric ", Я получаю только одну коробчатую диаграмму всех данных:

plot

Есть ли какие-либо предложения по поводу того, как получить эту непрерывно выглядящую кривую коробчатой ​​диаграммы (первое изображение), сохранив при этом возможность управления числовыми свойствами оси x? Спасибо!

20.11.2014

  • @Henrik Разве у вас не работает ссылка на Google Диск в вопросе? Это должен быть фрейм данных для этого примера. Спасибо, что пришли и снова помогли мне! Это был тяжелый день в мире R ... 21.11.2014
  • @Henrik Gotcha, извините за это. Работаем над редактированием сейчас 21.11.2014

Ответы:


1

Вот способ использования исходных данных, которые вы разместили в Google, которые на самом деле были намного полезнее, ИМО.

ggplot(df, aes(x=CH, y=value,group=CH))+
  geom_boxplot(notch=FALSE, outlier.shape=NA, fill="red", alpha=0.2)+
  scale_x_log10()

Итак, как сказал @BenBolker перед тем, как удалить свой ответ (??), вы должны оставить переменную x (CH) как числовую и установить group=CH в вызове на aes(...).

Однако с вашими реальными данными есть еще одна проблема. Ваш CH имеет более или менее логарифмический интервал, поэтому точек ‹1 примерно столько же, сколько между 1–10 и т. Д. ggplot хочет сделать коробки одинакового размера, поэтому с линейной осью x ширина прямоугольника равна меньше ширины линии, и вы вообще не видите квадратов. Изменение оси x на логарифмическую шкалу более или менее исправляет это.

20.11.2014

2

Не делайте x фактором. Вам нужно эстетически отобразить group, который является фактором, определяющим, с каким блоком связано значение, к счастью, после плавления это ваш variable столбец:

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

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

20.11.2014
  • Проблема в следующем: я расплавил исходные данные в основном для того, чтобы получить данные из тонны столбцов в один столбец. На самом деле я не хочу отображать по переменной, но хочу отображать по значению x. 21.11.2014
  • Затем установите group=x, как сказал @BenBolker (жаль, что он удалил свой ответ). 21.11.2014
  • Новые материалы

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

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

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

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

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

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

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