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

ggplot2: соединяющие линии между точками из разных наборов данных

Вот пример кода проблемы, с которой я столкнулся:

set.seed(1)
group1 <- sample(c(1, 0), size=200, replace=T)
group2 <- sample(c(1, 0), size=200, replace=T)
score <- rnorm(200) + .5*group1 + 2.2*group2 - 1.7*group1*group2
d <- data.frame(score=score, group1=as.factor(group1), group2=as.factor(group2))
k <- d %>% 
  group_by(group1, group2) %>% 
  summarize(mean=mean(score), median=median(score))
k <- gather(k, "estimate", "value", mean, median)
p <- ggplot(data=d, aes(x=group1, y=score, colour=group2)) + 
    geom_jitter(alpha = .3) +
    geom_point(data=k, aes(y=value, shape=estimate), size=3, position=position_dodge(width=.2))

Что производит эту графику:

ggplot изображение

Все идет нормально. Теперь, когда я пытаюсь соединить линии так, как они мне нужны:

p + geom_line(data=k, aes(y=value, linetype=estimate, group=estimate))

Я получаю сообщение об ошибке:

Error: geom_path: If you are using dotted or dashed lines, colour, size and linetype must be constant over the line

Любые идеи, почему это происходит и как это исправить?

Я видел в Интернете другие решения по их подключению, но все они предполагают, что пользователь использует одни и те же наборы данных как для базовой aes, так и для geom_line. Здесь это разные наборы данных.

29.08.2019

Ответы:


1

Хорошо, я должен был подождать пять минут, прежде чем публиковать. Я понял:

group1 = sample(c(1, 0), size=200, replace=T)
group2 = sample(c(1, 0), size=200, replace=T)
score = rnorm(200) + .5*group1 + 2.2*group2 - 1.7*group1*group2
d = data.frame(score=score, group1=as.factor(group1), group2=as.factor(group2))
k = d%>%group_by(group1, group2)%>%summarize(mean=mean(score), median=median(score))
k = gather(k, "estimate", "value", mean, median)
ggplot(data=d, aes(x=group1, y=score, colour=group2)) + 
    geom_jitter(alpha = .3) +
    geom_point(data=k, aes(y=value, shape=estimate), size=3, position=position_dodge(width=.2)) +
    geom_line(data=k, aes(y=value, linetype=estimate, group=interaction(group2,estimate)), position=position_dodge(width=.2))

Что производит:

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

Я видел, как другие пишут о функции interaction, но я думал о смешивании переменных между двумя наборами данных; Я не думал, что во втором наборе данных есть такая же переменная.

Надеюсь, это поможет некоторым усталым путешественникам в будущем!

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

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

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

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

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

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

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

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


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