WedX - журнал о программировании и компьютерных науках

Как добавить геометрию в столбец списка ggplot`s

Основываясь на этом вопросе, я хотел бы добавить геометрию к полученному графику по строкам после того, как я распаковал data.frame, чтобы получить график для каждой строки с выделенными данными строки внутри группы.

library(tidyverse) # using  version 1.3.0
mydata <- data_frame(group = c('a', 'a', 'a', 'b', 'b', 'b'),
                     x = c(1,2,3,5,6,7),
                     y = c(3,5,6,4,3,2))
mydata2 <- mydata %>% 
  group_by(group) %>% 
  nest() %>% 
  mutate(myplot = map(data, ~ggplot(data = .x, aes(x = x, y = y)) + geom_point()))
mydata2
# A tibble: 2 x 3
# Groups:   group [2]
  group data             myplot
  <chr> <list>           <list>
1 a     <tibble [3 x 2]> <gg>  
2 b     <tibble [3 x 2]> <gg>  

Желаемый результат для первой строки:

mydata2$myplot[[1]] + geom_point(mapping = aes(x=1,y=3),color = "red")

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


Однако при попытке реализовать это на невложенном data.frame я терплю неудачу. Вот мои три попытки и их результаты:

mydata3 <- mydata2 %>% 
  unnest(data) %>% 
  mutate(myplot2 = myplot + geom_point(mapping = aes(x=x,y=y),color = "red"))
mydata3$myplot2[[1]]
NULL
Warning message:
Unknown or uninitialised column: `myplot2`. 


mydata4 <- mydata2 %>% 
  unnest(data) %>% 
  mutate(myplot2 = list(myplot[[1]] + geom_point(mapping = aes(x=x,y=y),color = "red")))
mydata4$myplot2[[1]]

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

Все точки стали красными! Я получил тот же результат для этой попытки:

mydata5 <- mydata2 %>% 
  unnest(data) %>% 
  mutate(myplot2 = map(myplot,~.x + geom_point(mapping = aes(x=x,y=y),color = "red")))
mydata5$myplot2[[1]]

Итак, мой вопрос: есть ли способ получить первый сюжет, используя тидиверс?


Ответы:


1

Попробуй это. Уловка состоит в том, чтобы использовать pmap для "rowise" цикла по x, y и myplot. Координаты x и y передаются geom_point через аргумент данных, который представляет собой просто df только с одной строкой:

library(tidyverse)
mydata <- data_frame(group = c('a', 'a', 'a', 'b', 'b', 'b'),
                     x = c(1,2,3,5,6,7),
                     y = c(3,5,6,4,3,2))

mydata2 <- mydata %>% 
  group_by(group) %>% 
  nest() %>% 
  mutate(myplot = map(data, ~ggplot(data = .x, aes(x = x, y = y)) + geom_point()))

mydata3 <- mydata2 %>%
  unnest(data) %>% 
  mutate(myplot2 = pmap(list(x, y, myplot), ~ ..3 + geom_point(data = data.frame(x = ..1, y = ..2), mapping = aes(x, y), color = "red")))

mydata3$myplot2[[1]]

Создано 13 апреля 2020 г. пакетом REPEX (v0.3.0)

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

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

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

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


Для любых предложений по сайту: [email protected]