Другой вариант - нарисовать точки другим геом. сначала вам нужно будет сделать некоторые подсчеты для ваших данных (и для биннинга), но это не требует увеличения длины ваших данных.
Например, вы можете использовать geom_point
, но задача состоит в том, чтобы получить Размеры ваших точек правильные, поэтому они касаются / не касаются. Это зависит от размера устройства / файла.
Но вы также можете просто использовать ggforce::geom_ellipse
для рисования точек:)
geom_point (метод проб и ошибок с размерами устройства) )
library(tidyverse)
library(gganimate)
set.seed(42)
samples <- rnorm(100)
index <- seq(1:length(samples))
df <- tibble(value = samples, index = index)
bin_width <- 0.25
count_data <- # some minor data transformation
df %>%
mutate(x = plyr::round_any(value, bin_width)) %>%
group_by(x) %>%
mutate(y = seq_along(x))
plot <-
ggplot(count_data, aes(group = index, x, y)) + # group by index is important
geom_point(size = 5)
p_anim <-
plot +
transition_reveal(index)
animate(p_anim, width = 550, height = 230, res = 96)
geom_ellipse (полный контроль размера точки)
library(ggforce)
plot2 <-
ggplot(count_data) +
geom_ellipse(aes(group = index, x0 = x, y0 = y, a = bin_width/2, b = 0.5, angle = 0), fill = 'black') +
coord_equal(bin_width) # to make the dots look nice and round
p_anim2 <-
plot2 +
transition_reveal(index)
animate(p_anim2)
обновление по ссылке, которую вы предоставляете на удивительный пример Томаса, вы можете видеть, что он использует аналогичный подход - он использует geom_circle вместо geom_ellipse, который я выбрал из-за лучшего контроля как для вертикального, так и горизонтального радиуса.
Чтобы получить эффект «падающих капель», вам понадобится transition_states
, большая длительность и много кадров в секунду.
p_anim2 <-
plot2 +
transition_states(states = index, transition_length = 100, state_length = 1) +
shadow_mark() +
enter_fly(y_loc = 12)
animate(p_anim2, fps = 40, duration = 20)
Создано в 2020-04-29 пакетом Представить (v0.3.0)
некоторое вдохновение от: ggplot dotplot: Как правильно использовать geom_dotplot?