R
1install.packages("ggpubr") 2 3library("ggplot2") 4library("ggimage") 5library(tidyverse) 6library(jpeg) 7library(ggpubr) 8 9## Warning: パッケージ 'tidyverse' はバージョン 3.5.3 の R の下で造られました 10## -- Attaching packages --------------------------------------- tidyverse 1.2.1 -- 11## √ ggplot2 3.1.0 √ purrr 0.2.5 12## √ tibble 2.1.3 √ dplyr 0.8.5 13## √ tidyr 1.0.0 √ stringr 1.3.1 14## √ readr 1.2.1 √ forcats 0.3.0 15## Warning: パッケージ 'ggplot2' はバージョン 3.5.1 の R の下で造られました 16## Warning: パッケージ 'tibble' はバージョン 3.5.3 の R の下で造られました 17## Warning: パッケージ 'tidyr' はバージョン 3.5.3 の R の下で造られました 18## Warning: パッケージ 'readr' はバージョン 3.5.1 の R の下で造られました 19## Warning: パッケージ 'dplyr' はバージョン 3.5.3 の R の下で造られました 20## -- Conflicts ------------------------------------------ tidyverse_conflicts() -- 21## x dplyr::filter() masks stats::filter() 22## x dplyr::lag() masks stats::lag() 23reset_df <- function(){ 24 df <- tibble( 25 v0 = 100, #initial velocity 26 theta = 1.4, #angle in radians 27 gravity = 5, #this is just picked for the sclale 28 adj = 0, #used in the bouncing effect 29 decay = 0.8, #the bounciness of the ball 30 color = "black", #color of the ball 31 cex = 30, #size of the ball 32 pch = "a" 33 t = 0, #time position of this ball 34 xpos = 0, #current x position (will be updated) 35 ypos = 0, #current y position (will be updated) 36 ) 37 return(df) 38} 39 40img <- readPNG("1.png") 41ball <- readPNG("e.png") 42 43generate_picture <- function(df, xrange = 1200, yrange = 900){ 44 45 range_xy_ratio <- xrange/yrange 46 47 gg <- ggplot(df) + 48 background_image(img) + 49 geom_point(aes(x = xpos, y = ypos, color = color, size = cex)) + 50 labs(x = NULL, y = NULL) + 51 scale_x_continuous(breaks = NULL, minor_breaks = NULL) + 52 scale_y_continuous(breaks = NULL, minor_breaks = NULL) + 53 theme(legend.position = "none", 54 panel.background = element_rect(fill = "transparent", colour = NA)) + 55 coord_cartesian(xlim = c(0,xrange), ylim = c(0,yrange)) 56 57 return(gg) 58} 59 60 61generate_picture(df) 62 63df <- reset_df() 64 65simulate_ball <- function(df, time_lapse=0.3){ 66 #new t value 67 df <- df %>% mutate(t = t + time_lapse) 68 69 #calculate new position 70 df <- df %>% 71 mutate( 72 ypos = v0 * t * sin(theta) - (gravity * t^2), 73 xpos = v0 * t * cos(theta) + adj 74 ) 75 76 # check for anything bouncing 77 for (x in seq(nrow(df))) { 78 if (df$ypos[x] < 0) { 79 # reset the bounce 80 df$adj[x] <- df$xpos[x] 81 df$v0[x] <- df$v0[x] * df$decay[x] 82 df$t[x] <- -time_lapse 83 } 84 } 85 # if stuck, settle it. 86 df$v0 <- ifelse(df$v0 < 0.01, 0, df$v0) 87 df$t <- df$t + time_lapse 88 89 return(df) 90} 91 92for(i in 1:5){ 93 print(i) 94 df <- df %>% simulate_ball(.,time_lapse = 0.3) 95 generate_picture(df) %>% print() 96} 97 98av::av_capture_graphics(expr = { 99 df <- reset_df() 100 for(i in 1:100){ 101 print(i) 102 df <- df %>% simulate_ball(.,time_lapse = 0.3) 103 generate_picture(df) %>% print() 104 } 105}, output = "test2.gif", framerate = 40)
この跳ねるボールですが、ボールを画像(ball)にするにはどうするのでしょうか??教えて下さい、一応、
https://www.karada-good.net/analyticsr/r-570
このサイトに以下のように、画像をプロットする方法があるのですが、どう融合させれば良いのか分かりません。
R
1#パッケージの読み込み 2library("ggimage") 3library("ggplot2") 4 5###データ例の作成##### 6n <- 15 7TestData <- data.frame("Group" = sample(paste0("Group", 1:5), n, replace = TRUE), 8 "x" = sample(c(1:100), n, replace = TRUE), 9 "y" = sample(c(1:200), n, replace = TRUE)) 10 11######## 12 13#aesオプションで位置も指定できるgeom_imageコマンド 14#画像はimageオプションに指定する 15#画像URLを指定,例:からだにいいものバナー 16img <- "https://www.karada-good.net/wp/wp-content/uploads/2017/02/71a12352149ee8527b2463b5e524b24c.jpg" 17#例1 18ggplot(TestData, aes(x, y)) + 19 geom_image(image = img, size = .5, na.rm = FALSE) 20#例2 21ggplot(TestData, aes(x, y)) + 22 geom_boxplot() + 23 geom_image(aes(x = mean(TestData[, 2]), y = mean(TestData[, 3])), 24 image = img, size = .8, na.rm = FALSE)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。