Я пытаюсь воссоздать модель урны Поля (https://en.wikipedia.org/wiki/Pólya_urn_model) в R, с ggplot. Модель в основном начинается с 1 белого и 1 черного шара в урне, случайным образом выбирает один шар и кладет его обратновместе с шариком того же цвета. Я делаю это в R, скажем, 10 итераций (поэтому 10 раз вынимаем один шарик и кладем обратно вместе с другим шариком того же цвета). И я запускаю это, скажем, 5 раз., я получаю фрейм данных из 5 столбцов (= для каждого прогона) и 10 строк (= для итераций).
Я хочу проиллюстрировать это , но тогда это изображение имееточевидно, гораздо больше испытаний и итераций.
Пока у меня есть фрейм данных, в котором каждый столбец представляет собой долю белых шариков в урне за пробу / прогон, и я хотел бы проиллюстрировать, как изменились пропорции длякаждую итерацию. И я хочу показать это отдельно для каждого прогона, поэтому каждый прогон я хотел бы иметь в другом цвете.
Я просмотрел бесчисленные похожие вопросы, но сделалне найти ответ.Я думаю, это потому, что мой фрейм данных теперь имеет 5 столбцов, но когда я изменяю его форму, я получаю только один столбец пропорций, и рядом с каждым я получаю код, иллюстрирующий, к какому столбцу он принадлежал - но в этом случае ggplot рисует только одинлиния в 4 цветах.
my data frame looks like this:
V1 V2 V3 V4 id
1 0.3333333 0.33333333 0.33333333 0.3333333 1
2 0.5000000 0.25000000 0.25000000 0.2500000 2
3 0.4000000 0.20000000 0.20000000 0.4000000 3
4 0.3333333 0.16666667 0.16666667 0.3333333 4
5 0.2857143 0.14285714 0.14285714 0.2857143 5
6 0.2500000 0.12500000 0.12500000 0.3750000 6
7 0.2222222 0.11111111 0.11111111 0.3333333 7
8 0.2000000 0.10000000 0.10000000 0.3000000 8
9 0.1818182 0.09090909 0.09090909 0.2727273 9
10 0.2500000 0.08333333 0.08333333 0.2500000 10
, но для упрощения вот несколько тестовых кодов:
V1 <- rnorm(10, 0.5, 0.1)
V2 <- rnorm(10, 0.5, 0.1)
V3 <- rnorm(10, 0.5, 0.1)
V4 <- rnorm(10, 0.5, 0.1)
df <- data.frame(V1, V2, V3, V4)
Мой код для ggplot следующий:
library(reshape2)
df$id = row.names(df) # add id to each row
df_long = melt(df, id.vars = "id") # reshape the data into long format
только эта первая версияпоказывает точки
ggplot(df_long, aes(x = value, y = id, color = variable)) +
geom_point()
, и эта версия каким-то образом запутывает строки, и я не могу понять, почему.
ggplot() + geom_line(data = df_long, aes(x = value, y = id, color = variable, group = variable)) + xlab("x axis") + ylab("y axis")
Любая помощь будет оценена, я был действительноборолся с этим несколько дней и пока не смог сделать сколько-нибудь значительных прорывов.
РЕДАКТИРОВАТЬ: Под «испорченным» я имею в виду, что вместо построения одной строки за цикл (которую я хочу получить), точки данныхкажется, теряют, к какому испытанию / пробежке они принадлежат.Таким образом, вместо того, чтобы получать одну линию за цикл / пробную версию, я получаю больше линий, из которых некоторые соединяют только 2-3 точки и часто соединяют точки из разных серий.Надеюсь, мои объяснения достаточно ясны.