2016-11-03 10 views
2

ggcorr() function within library(GGally)を使用して相関行列を作成しようとしています。パッケージは想定どおり動作していますが、私は軸ラベルがどのようにプロット上に表示されるかを編集したいという問題に取り掛かりました。相関行列のラップ軸ラベル

現在、自動的に_またはを追加します。名前をスペースやその他の文字で区切ります。理想的には、名前の空白の間に改行(\ n)を作成して、長い名前と短い名前を読みやすく、適切な列や行をはるかに超えないようにしたいと考えています。

str_wrap()を含む他の人がSOで使用した解決策を見つけましたが、この特定のパッケージではなくggplot()コール内でした。私はthe R code for the packageを検査しましたが、これらのラベルを特に編集する場所は見つかりませんでした。 X軸またはY軸のテキストを編集しようとすると、まったく新しい軸とラベルのセットが追加されます。

私は現在dcast()のデータフレームを結果のデータフレームに挿入していますが、プレーヤー名列に "gsub()" \ n "と入力しても、dcast()の遷移で失われます。

ここに私が取り組んでいるものの例があります。ラベルの姓と名の間に改行を自動的に作成したいと考えています。

library(GGally) 
library(ggplot2) 

test <- structure(list(Date = structure(c(17100, 17102, 17103, 17106, 
17107), class = "Date"), `Alexis Ajinca` = c(1.2, NA, 9.2, 6.4, 
NA), `Anthony Davis` = c(95.7, 76.9, 29, 67, 24.9), `Buddy Hield` = c(9.7, 
4.7, 17, 8, 28.3), `Cheick Diallo` = c(NA, NA, 3.2, NA, NA), 
    `Dante Cunningham` = c(0.5, 27.6, 14, 13.5, -1), `E'Twaun Moore` = c(19.2, 
    16.1, 22, 20.5, 10.1), `Lance Stephenson` = c(16.1, 31.6, 
    8, 8.1, 34.8), `Langston Galloway` = c(10.9, 2, 13.8, 2.2, 
    29.4), `Omer Asik` = c(4.7, 6.6, 9.9, 15.9, 14.2), `Solomon Hill` = c(4.7, 
    13.2, 12.8, 35.2, 4.4), `Terrence Jones` = c(17.1, 12.4, 
    9.8, NA, 20.8), `Tim Frazier` = c(40.5, 40.2, 18.3, 44.1, 
    7.2)), .Names = c("Date", "Alexis Ajinca", "Anthony Davis", 
"Buddy Hield", "Cheick Diallo", "Dante Cunningham", "E'Twaun Moore", 
"Lance Stephenson", "Langston Galloway", "Omer Asik", "Solomon Hill", 
"Terrence Jones", "Tim Frazier"), row.names = c(NA, -5L), class = "data.frame") 

ggc <- ggcorr(test[,-1], method = c("pairwise","pearson"), 
     hjust = .85, size = 3, 
     layout.exp=2) 
ggc 

enter image description here

任意およびすべての協力いただきありがとうございますと、ご質問を持っているか、いずれかの明確化が必要な場合は私に知らせてください!

+1

、ライン45は、あなたが名前を制御できる1つのスポットであるように見えます(多分\ N 'の代わりに 'gsub'にアンダーの'使用)、あなたは 'check.namesを追加する必要があるだろう= FALSE'を46行目に変更しました。49行目で再形成する代わりにreshape2が必要になりました。これらの変更で新しい関数を作成すると、望ましい出力が得られるようです。 – aosmith

+0

@aosmith - 提案していただきありがとうございます。 'gsub'勧告は間違いなくコードを見逃した場所です。しかし、私が間違っている場合は私を修正しますが、 'reshape2'のためだけの呼び出しが行われたように見えます。私はあなたが 'reshape'から' reshape2'に変わっているところは見ません。また、私の行番号はあなたのものでなければならないので、 'check.names = FALSE'をどこに置いているのか分かりません。 – medavis6

+1

'check.names'は' data.frame'の引数なので、 'm 'を' data.frame'にするときに使用します。表示されている関数が "m"でreshape2を使用している場合、変更は必要ありません。 – aosmith

答えて

1

あなたはggcorr

g = ggplot_build(ggc) 
g$data[[2]]$label = gsub("_", "\n", g$data[[2]]$label) 
grid::grid.draw(ggplot_gtable(g)) 

それとも、新しいデータフレームを作成し、geom_textを使用して、手動でラベルを追加することができますによって返されたオブジェクトを編集することができますアプローチ

のカップル。これはおそらく、テキストの位置揃えと配置を少しだけ制御します。機能で

# I dont see how to suppress the labels so just set the size to zero 
ggc <- ggcorr(test[,-1], method = c("pairwise","pearson"), 
     hjust = .85, 
     size = 0, # set this to zero 
     layout.exp=2) 

# Create labels and plot 
dat <- data.frame(x = seq(test[-1]), y = seq(test[-1]), 
        lbs = gsub(" ", "\n", names(test[-1]))) 
ggc + geom_text(data=dat, aes(x, y, label=lbs), nudge_x = 2, hjust=1) 
+0

偉大な答え。私は特に 'geom_text()'を使ってより多くの制御を可能にする2番目の提案が好きです。私は[名前の区切りの間に線が引かれている](https://i.gyazo.com/f7918e9b47b3a392b66581e4876de257.png)という問題が1つあります。あなたはあなたのために同じ問題を抱えていますか? – medavis6

+0

@ medavis6;いいえ、私はこの効果を見ません。私のシステム。 R3.3.2、GGally_1.0.1、ggplot2_2.1.0.9000、 – user20650

+0

確認していただきありがとうございます。 FWIW、私はGGally_1.2.0、ggplot2_2.1.0.9001、R3.3.1を使用しています。行を削除するには、単に 'size = 0、#これを0にして' size = NA 'に変更しました。今日のすべての助けをありがとう! – medavis6

関連する問題