Rでggplot2を使用して同様のプロットを作成する方法は?

3
Uddin 2020-02-23 15:55.

次のデータセットでは、変数ごとにプロットし、10番目の観測値ごとに異なる色を付けたいと思います。Rベースでできます。ggplot2を使用してそれを行う方法を学びたいですか?

dput(mydata)

structure(list(beta0_C1 = c(5.90722120539152, 5.89025566996191, 
5.88591520258904, 5.86911167649919, 5.93772460437405, 5.92985640353594, 
5.89150365752453, 5.99046628686212, 5.91548006074821, 5.91571832976612, 
5.88437484241154, 5.92092513223357, 5.98978050584774, 5.91152552752889, 
5.91235823292462, 5.87961960044268, 5.84048698713552, 5.85484766204026, 
5.94002829943904, 5.8844367778216, 5.90201348639369, 5.91220967575205, 
5.90010933186624, 5.9187781795242, 5.85506764080697, 5.90103565341373, 
5.88527143992961, 5.90218851192948, 5.90118162849608, 5.93147588185271
), beta1_C1 = c(0.389473200070741, 0.386495525456602, 0.401277295631578, 
0.400952009358693, 0.376727640651344, 0.380365338054745, 0.393444927288697, 
0.351041363714069, 0.393194356572458, 0.393448101768608, 0.398884551136789, 
0.399458966787235, 0.357436746423815, 0.393782316102096, 0.387154169967002, 
0.400838223362088, 0.404272252119662, 0.407427775176583, 0.379704250022161, 
0.388842664781329, 0.382202010301184, 0.401354531881688, 0.391184010553641, 
0.390280828053183, 0.402135923802544, 0.384344141458216, 0.405409447440106, 
0.391719398951194, 0.398025625260563, 0.361822915989445), beta2_C1 = c(-0.0214886993465096, 
-0.020723519439664, -0.0224612526333316, -0.0218187226687474, 
-0.0200324040063121, -0.0208421378685671, -0.0218756660346625, 
-0.0182499666400075, -0.0222765863213226, -0.022242845613047, 
-0.0222033291270054, -0.0231570312767931, -0.0189429585905841, 
-0.0221017468740293, -0.0209327798783444, -0.022409049257, -0.021698958175968, 
-0.0225601087054418, -0.020928341508875, -0.0214668830626075, 
-0.0205872002686706, -0.0233768022702472, -0.021755967293395, 
-0.0218442145294776, -0.0222514480818199, -0.0212195394692002, 
-0.0232109717283908, -0.0214814999754984, -0.0225124468437127, 
-0.0187033387452614), beta0_C2 = c(6.50537199380546, 6.43626630601952, 
6.44460360859128, 6.44788878017196, 6.49678676895955, 6.48474789770674, 
6.5459727637079, 6.37593806532098, 6.39492158034295, 6.44497331914909, 
6.3888816168562, 6.49660574813212, 6.45922901141938, 6.40080765767324, 
6.37918638201668, 6.49354321098856, 6.47057962920788, 6.55699741431025, 
6.56617313133218, 6.54271932949381, 6.44608000042182, 6.45333777656105, 
6.67458442747556, 6.48420983182487, 6.59919337271637, 6.46645685814734, 
6.46171236062657, 6.52625058117578, 6.51177045919728, 6.49897849935538
), beta1_C2 = c(-0.370455826326915, -0.338852275811034, -0.340671118342601, 
-0.339888681238265, -0.36934391822867, -0.357194169746804, -0.415966150286963, 
-0.349051278947586, -0.358209379291251, -0.371785518417424, -0.349725822847608, 
-0.368220986471866, -0.327425879655177, -0.336993142255552, -0.328859493371605, 
-0.347764105375218, -0.329761787134926, -0.37935820670654, -0.400211161919931, 
-0.408699321227288, -0.357590345066542, -0.376548827126353, -0.44672514669147, 
-0.353840422053319, -0.421912098450693, -0.371491468175642, -0.354864346664247, 
-0.39139246919467, -0.379006372881295, -0.372492936183765), beta2_C2 = c(0.039728365796445, 
0.0368393936404604, 0.0375019672690036, 0.0375019364609944, 0.0403444583999664, 
0.0378627636833333, 0.0446717245407897, 0.0377538641609231, 0.039662572899695, 
0.0408055348533836, 0.0386737104573771, 0.0397794302159846, 0.0352739962796708, 
0.0376756204317514, 0.0370614500426065, 0.0374731659969108, 0.035366001926832, 
0.0397165124506166, 0.0414814320660011, 0.0431083057931525, 0.0388672853038453, 
0.0403590048367136, 0.0461540000449275, 0.0379315295246309, 0.0440664419193363, 
0.0404593732981113, 0.0387390924290065, 0.0417832766420881, 0.0409598003097311, 
0.0394548129358408)), row.names = c(NA, 30L), class = "data.frame")

Rベースコード

 par(mfrow=c(3,3))
col.set=c("green","blue","purple","deeppink","darkorchid","darkmagenta","black","khaki")
loop.vector=1:ncol(mydata)
for(b in loop.vector) {
  x.beta<-mydata[,b]
  beta <- substr(sub("^beta", '', names(mydata)[b]),1,1)
  Cn <- substr(sub("^beta", '',names(mydata)[b]),3,4)
  plot(x.beta, type = "n", ylab="", xlab="",
       main=bquote(beta[.(beta)]~.(Cn)), 
       cex.main=1) 
  mtext("plots of betas",line=-1.5, cex=1, outer = TRUE)
  for (k in 1:3){
    beta_k=mydata[((nrow(mydata)/3)*k-((nrow(mydata)/3)-1)):
                           ((nrow(mydata)/3)*k),b]
    lines(((nrow(mydata)/3)*k-((nrow(mydata)/3)-1)):
            ((nrow(mydata)/3)*k),beta_k,
          col=col.set[k])
    legend("topleft", bg="transparent",inset=0.05,legend=paste0("chain_",1:3),
           col=col.set, lty=1,box.lty=0, cex=0.8)
  }
}

各プロットに同じメインタイトルを、すべてのプロットに1つのメインタイトルが必要です。

ggplot2パッケージを使用してそれを行うにはどうすればよいですか?

2 answers

4
Kent Johnson 2020-02-23 23:53.

ggplot2 x、y、colorなどの変数を含む長いデータフレームで最適に機能します。これにより、長いデータフレームが作成されます。

library(tidyverse)
long_data = my_data %>%
  mutate(n=1:nrow(my_data), chain=paste0('Chain ', rep(1:3, each=nrow(my_data)/3))) %>% 
  pivot_longer(cols=c(-n, -chain)) %>% 
  mutate(name=str_replace(name, '(\\d)_', '[\\1]~~'))

これでプロットが作成されます。

ggplot(long_data, aes(n, value, color=chain)) +
  geom_line() +
  facet_wrap(~name, scales='free_y', ncol=3, dir='v',
             labeller=label_parsed) +
  scale_color_manual('', values=c('Chain 1'='green', 'Chain 2'='blue', 'Chain 3'='purple')) +
  theme_minimal() 

2
dc37 2020-02-24 00:13.

@KentJohnsonの回答と非常によく似ていますが、ファセットの式のラベル付け、中央揃えのタイトルを追加し、scale_color_manual関数を使用して色のラベル付けを編集します。

library(ggplot2)
library(dplyr)
library(tidyr)
df %>% mutate(Group = rep(c("A","B","C"), each = 10), 
              Position = 1:30) %>%
  pivot_longer(-c(Group,Position), names_to = "Var",values_to = "val") %>%
  mutate(Var = factor(Var, levels = c("beta0_C1","beta1_C1","beta2_C1","beta0_C2","beta1_C2","beta2_C2"),
                      labels = c(expression(beta[0]*"C1"),
                                 expression(beta[1]*"C1"),
                                 expression(beta[2]*"C1"),
                                 expression(beta[0]*"C2"),
                                 expression(beta[1]*"C2"),
                                 expression(beta[2]*"C2")))) %>%
  ggplot(aes(x = Position, y = val, color = Group))+
  geom_line()+
  facet_wrap(.~Var, scales = "free", labeller = label_parsed)+
  labs(x = "", y ="", title =  "Plots of Betas", color = "")+
  scale_color_manual(values = c("green","blue","purple"), labels = c("Chain 1","Chain 2","Chain 3"))+
  theme_minimal()+
  theme(plot.title = element_text(hjust = 0.5))

Related questions

MORE COOL STUFF

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは、夫に会ったとき、典型的な交際のアドバイスに逆らいました。

マイケルシーンが非営利の俳優である理由

マイケルシーンが非営利の俳優である理由

マイケルシーンは非営利の俳優ですが、それは正確にはどういう意味ですか?

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

特徴的なスターのコリン・エッグレスフィールドは、RomaDrama Liveでのスリル満点のファンとの出会いについて料理しました!加えて、大会での彼のINSPIREプログラム。

「たどりつけば」をオンラインでストリーミングできない理由

「たどりつけば」をオンラインでストリーミングできない理由

ノーザンエクスポージャーが90年代の最も人気のある番組の1つになった理由を確認するには、Blu-rayまたはDVDプレーヤーをほこりで払う必要があります。

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖は、世界で2番目に大きいボイリング湖です。そこにたどり着くまでのトレッキングは大変で長いですが、努力する価値は十分にあります。

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

サロンからのヘアトリミングや個人的な寄付は、油流出を吸収して環境を保護するのに役立つマットとして再利用できます。

ホワイトハウスの最も記憶に残る結婚式を見てください

ホワイトハウスの最も記憶に残る結婚式を見てください

過去200年以上の間にホワイトハウスで結婚したのはほんの数人です。彼らは誰でしたか、そしてそこで結婚式を獲得するために何が必要ですか?

この太陽に優しいショルダーバッグで一日中外出してください

この太陽に優しいショルダーバッグで一日中外出してください

画像クレジット:Richard Mackney / Flickrトラベリングライトは必需品だけを運ぶことを意味するかもしれませんが、デバイスを補充する方法がない外出先では、接続を維持するのが難しくなる可能性があります。それはあなたがすべての生き物の快適さやクールなガジェットを捨てる必要があるという意味ではありません、ただあなたがいくつかのより小さなものを手に入れる必要があるということです、そしておそらくあなた自身をジュースに保つためにいくつかの、例えば非正統的な充電装置を使うでしょう。

ミッドセンチュリーリゾートのポストカードが廃墟に変わるのを見る

ミッドセンチュリーリゾートのポストカードが廃墟に変わるのを見る

ニューヨーク州スプリンググレンにある放棄されたホモワックロッジのボーリング場。キャッツキル南部のこの地域は、ニューヨーク市からのユダヤ人の行楽客に人気があることから、かつてはボルシチベルトとして知られていました。

ブルックリンスレートの美しいボードをあなたのテーブルに座らせましょう

ブルックリンスレートの美しいボードをあなたのテーブルに座らせましょう

ブルックリンスレートブルックリンスレートのマグカップとコースターの賞賛をすでに歌っており、それらの食器製品も同様に堅実です。ブルックリンスレートは、さまざまなサイズとテクスチャのスレートの完全な採石場を販売しています。一部のオプションは赤でも利用できます。上で見ることができるように、彼らは同様にカスタマイズをします。

遺伝子分析により、私たちの体内に生息する微生物の99%がカタログ化されていないことが明らかになりました

遺伝子分析により、私たちの体内に生息する微生物の99%がカタログ化されていないことが明らかになりました

画像:Juan Gaertner / Shutterstock私たちの体の内部は、私たちの細胞とは何の関係もない何十億もの微生物が住んでいる本物の生態系です。これがまだ少し気になることではなかったかのように、これらの微生物の99%が研究されたことがないことがわかりました。

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya shared a sweet photo in honor of boyfriend Tom Holland's 26th birthday Wednesday

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

シーレン「Ms.JuicyBaby」ピアソンは、先月脳卒中で入院した後、「もう一度たくさんのことをする方法を学ばなければならない」ため、言語療法を受けていることを明らかにしました。

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

オスカー受賞者の世紀半ばの家には、3つのベッドルーム、2つのバス、オーシャンフロントの景色があります。

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、生後4か月の娘、モナコに母乳育児をしていると語った。

投資ノート:Bioscout AU$300万シード

投資ノート:Bioscout AU$300万シード

Bioscoutは、農家を運転席に置くという使命を負っています。Artesian(GrainInnovate)やUniseedと並んで、最新のシードラウンドでチームを支援できることをうれしく思います。問題真菌症による重大な作物の損失は、農民にとって試練であることが証明されています。

リトルマーケットリサーチ1| 2022年のクイックグリンプス遠隔医療市場

リトルマーケットリサーチ1| 2022年のクイックグリンプス遠隔医療市場

遠隔医療は、パンデミック後の時代では新しいものではなく、時代遅れの分野でもありません。しかし、業界を詳しく見ると、需要と供給の強力な持続可能性と、米国で絶え間ない革命となる強力な潜在的成長曲線を示しています。

スタートアップ資金調達環境:タイのスタートアップエコシステムの次は何ですか?

スタートアップ資金調達環境:タイのスタートアップエコシステムの次は何ですか?

2021年は、世界的なベンチャーキャピタル(VC)の資金調達にとって記録的な年でした。DealStreetAsiaによると、東南アジアも例外ではなく、この地域では年間で記録的な25の新しいユニコーンが採掘されました。

ムーアの法則を超えて

ムーアの法則を超えて

計算に対する私たちの欲求とムーアの法則が提供できるものとの間には、指数関数的に増大するギャップがあります。私たちの文明は計算に基づいています—建築と想像力の現在の限界を超える技術を見つけなければなりません。

Language