因此,我有一个有序列表,例如:
(1、2、3、4、5、6、7、8)
然后我有多个排列,说:
(3、2、5、4、1、6、7、8),
(7、2、4、1、3、5、8、6),
...
现在,我需要使用相同的有序列表分别绘制每个排列(在新图中),以便形成坐标的散点图。
因此,对于第一个排列,我需要绘制(1,3),(2,2),(3,5),(4,4),...
对于第二个排列,我需要绘制(1,7),(2,2),(3,4),(4,1),...
像这样的东西:
我是为一对夫妇+排列对创建的,但是我不知道如何使用多个排列来缩放它。我只是每次都手动替换排列,但是这种方式要花一些时间:
library(tidyverse)
ordered <- c(1, 2, 3, 4, 5, 6, 7, 8, 9)
permutation <- c(5, 7, 8, 6, 9, 4, 1, 3, 2)
coord.permutations <- data.frame(ordered,permutation)
ggplot(data=coord.permutations)+
geom_point(aes(ordered,permutation,size=3))+
scale_x_continuous(breaks = seq(0,(length(ordered)+1)), minor_breaks = seq(0,(length(ordered)+1)), expand = c(0,0), limits= c(0,(length(ordered)+1)))+
scale_y_continuous(breaks = seq(0,(length(ordered)+1)), minor_breaks = seq(0,(length(ordered)+1)), expand = c(0,0), limits= c(0,(length(ordered)+1)))+
coord_fixed()
在此先感谢您的帮助!
假设您已将排列保存在列表中coord.permutations
,则可以使用遍历此列表map
,并将每个图也保存在列表中。
library(tidyverse)
coord.permutations <- list(c(5, 7, 8, 6, 9, 4, 1, 3, 2), c(2, 9, 1, 6, 5, 4, 7, 3, 8))
plots <- map(coord.permutations, ~ggplot(tibble(ordered, permutation=.))+
geom_point(aes(ordered,permutation,size=3))+
coord_fixed())
plots[[1]]
使用10个排列的动画
library(gganimate)
ggplot(data.frame(ordered = rep(ordered, 10), permutation = unlist(map(1:10, ~sample(1:10, 9))), n_per = rep(1:10, each=9))) +
geom_point(aes(ordered,permutation)) +
transition_states(n_per, transition_length = 2, state_length = 1) +
ggtitle('Permutation {closest_state}')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句