質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

解決済

1回答

844閲覧

プロットを画像にする

amunagan

総合スコア22

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

0クリップ

投稿2021/12/25 22:21

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)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

※すいません、質問の意図を誤って認識しておりました。
回答として無意味なものですので無視いただければと思います。

以下ご認識回答

簡単に見ただけですが、参考にされているサイトは「画像を出力する方法」ではなく、プロットエリアに画像をプロット(出力)するだけに見えます。

目的はggplot()によってプロットされたものを画像化(.jpegや.pngなど)する、というものでよろしいでしょうか。

generate_picture関数のreturn(gg)の前に以下を記載してはいかがでしょうか。

R

1ggsave(file = "ball.png", plot = gg)

詳しくはggsave()で調べてみてください。画像の大きさを指定して保存することができたりします。

投稿2021/12/27 07:23

編集2021/12/27 07:25
haihaikazuma

総合スコア181

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問