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

Как сделать точку джиттера по центру с помощью ggplot2?

Я пытаюсь воссоздать многоточечный график, как показано на рисунке ниже. https://www.dropbox.com/s/9jqguesqd5gdm99/jitter%20plot.png

Были опробованы как geom_dotplot, так и position_jitter в ggplot2. Но ни одна из этих двух команд не смогла этого сделать.

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

Это цифра, которую я мог сделать до сих пор. https://www.dropbox.com/s/athsgkjjrlwr15k/figure.png?dl=0 например.

value<-c(141573,  262616,   66773.8,    93032.2,    55528.8,    113125, 252954, 275581, 207854, 183300, 292946, 171510, 343565, 214436, 295871, 187196, 207352, 180356, 158110, 241769, 180112, 194007, 529168, 229267, 344257, 337311, 255109, 307389, 416108, 405033, 292260, 354368, 416811, 330420, 353017, 333997, 389285, 289870, 289224, 401641, 206481, 367379)
group<-factor(c(1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2))
quantile<-boxplot(value~group)
line<-quantile$stats
library(ggplot2)
gg<-ggplot()+geom_point(aes(x=group,y=value,color=group,fill=group),position=position_jitterdodge(jitter.width=0.3,dodge.width=0.7),size=4)+
geom_path(aes(x=c(0.8,1.2),y=c(line[3,1],line[3,1])),size=1)+geom_path(aes(x=c(1.8,2.2),y=c(line[3,2],line[3,2])),size=1)+geom_path(aes(x=c(0.9,0.9,1.1,1.1),y=c(line[2,1],line[2,1],line[2,1],line[2,1])),size=1.2)+geom_path(aes(x=c(0.9,0.9,1.1,1.1),y=c(line[4,1],line[4,1],line[4,1],line[4,1])),size=1.2)+geom_path(aes(x=c(1.9,1.9,2.1,2.1),y=c(line[2,2],line[2,2],line[2,2],line[2,2])),size=1.2)+geom_path(aes(x=c(1.9,1.9,2.1,2.1),y=c(line[4,2],line[4,2],line[4,2],line[4,2])),size=1.2)+geom_path(aes(x=c(1,1),y=c(line[2,1],line[4,1])),size=1.2)+geom_path(aes(x=c(2,2),y=c(line[2,2],line[4,2])),size=1.2)+
scale_colour_manual(name="",values = c("1"="#353F6B","2"="#994642"))+
theme_classic()+theme(legend.position="none")
gg

Итак, мой вопрос: при использовании функции джиттера в ggplot2 можно ли сделать выбросы центральными, как на первом рисунке. И какой метод вы бы предложили для создания такой фигуры?

Спасибо

04.10.2014

  • Предоставьте несколько примеров данных и код, который вы используете, чтобы мы могли воссоздать то, что вы пытаетесь сделать. 04.10.2014
  • Спасибо за ваше предложение. Я добавил несколько примеров данных и свой код. 05.10.2014

Ответы:


1

В ggplot2 «дрожание» настраивается в обоих направлениях, например.

data(mpg)
ggplot(mpg, aes(x=cyl, y=hwy, group=factor(cyl))) +
    geom_boxplot() +
    geom_jitter(position = position_jitter(height = .2, width = .2))

... выглядит так:

geom_jitter 0.2

тогда как:

ggplot(mpg, aes(x=cyl, y=hwy, group=factor(cyl))) +
    geom_boxplot() +
    geom_jitter(position = position_jitter(height = .7, width = .7))

... больше похоже на "распылитель дробовика":

geom_jitter 0.7

Не могли бы вы создать нужный эффект, изменив параметр положения в geom_jitter?

05.10.2014
  • Спасибо за Ваш ответ. Выбросы на рисунке, который я пытаюсь воссоздать, кажутся центрированными. Я пробовал параметр position несколько раз, но это не сработало. 05.10.2014

  • 2

    Это просрочено на 6 лет, но, столкнувшись с этой проблемой совсем недавно, я нашел элегантный ответ, используя geom_beeswarm в библиотеке (geom_beeswarm), и решил опубликовать его здесь.

    Воспроизведение приведенного выше примера с geom_jitter с использованием mpg довольно запутанно:

    data(mpg)
    ggplot(mpg, aes(x=cyl, y=hwy, group=factor(cyl))) +
        geom_boxplot() +
        geom_jitter(position = position_jitter(height = .2, width = .2))
    

    Дрожание

    Принимая во внимание, что geom_beeswarm делает точки джиттера централизованными и более четкими:

    library(geom_beeswarm)
    data(mpg)
    ggplot(mpg, aes(x=cyl, y=hwy, group=factor(cyl))) +
        geom_boxplot() +
        geom_beeswarm()
    
    

    теплые пчелы

    06.10.2020

    3

    Кажется, вам нужно только настроить jitter.width. Я добавил альфу в код. Видеть # <<--

    gg<- ggplot()+
      geom_point(aes(x=group,y=value,color=group,fill=group), 
                 position=position_jitterdodge(jitter.width=0.1,  # <<- adjusted
                                               dodge.width=0.7), 
                 size=4, alpha=0.7)+                              # <<- alpha added
      geom_path(aes(x=c(0.8,1.2),y=c(line[3,1],line[3,1])),size=1)+
      geom_path(aes(x=c(1.8,2.2),y=c(line[3,2],line[3,2])),size=1)+
      geom_path(aes(x=c(0.9,0.9,1.1,1.1),y=c(line[2,1],line[2,1],line[2,1],line[2,1])),size=1.2)+
      geom_path(aes(x=c(0.9,0.9,1.1,1.1),y=c(line[4,1],line[4,1],line[4,1],line[4,1])),size=1.2)+
      geom_path(aes(x=c(1.9,1.9,2.1,2.1),y=c(line[2,2],line[2,2],line[2,2],line[2,2])),size=1.2)+
      geom_path(aes(x=c(1.9,1.9,2.1,2.1),y=c(line[4,2],line[4,2],line[4,2],line[4,2])),size=1.2)+
      geom_path(aes(x=c(1,1),y=c(line[2,1],line[4,1])),size=1.2)+
      geom_path(aes(x=c(2,2),y=c(line[2,2],line[4,2])),size=1.2)+
      scale_colour_manual(name="",values = c("1"="#353F6B","2"="#994642"))+
      theme_classic()+theme(legend.position="none")
    gg
    

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

    Просто примечание: я использую ggplot2 1.0.0.

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

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

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

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

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

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

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

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