14

以下の最初のプロットを生成する Shiny アプリにいくつかのコードがあります。ご覧のとおり、フォント サイズは相関係数のサイズによって異なります。ggpairs (GGally) や ggplot2 で同様のものを作成したいと思います。以下の 2 番目の画像は、次のコードで生成されました。

library(GGally)
ggpairs(df, 
  upper = list(params = c(size = 10)),
  lower = list(continuous = "smooth", params = c(method = "loess", fill = "blue"))
)

ご覧のとおり、相関フォントのサイズはサイズを使用して調整できますが、サイズのベクトルを設定すると、最初の値のみが使用されます。また、「Corr:」を削除して、有意性の指標を追加したいと思います。相関係数の記号に色を使用するのもいいでしょう。methodとはリンクfillしていませんsmooth。2番目のプロットを取得して1番目のより多くの機能をキャプチャする方法についての提案は素晴らしいでしょう.

アンスコムのデータ:

df <- structure(list(y1 = c(8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 
4.26, 10.84, 4.82, 5.68), x1 = c(10L, 8L, 13L, 9L, 11L, 14L, 
6L, 4L, 12L, 7L, 5L), y2 = c(9.14, 8.14, 8.74, 8.77, 9.26, 8.1, 
6.13, 3.1, 9.13, 7.26, 4.74), x2 = c(10L, 8L, 13L, 9L, 11L, 14L, 
6L, 4L, 12L, 7L, 5L), y3 = c(7.46, 6.77, 12.74, 7.11, 7.81, 8.84, 
6.08, 5.39, 8.15, 6.42, 5.73), x3 = c(10L, 8L, 13L, 9L, 11L, 
14L, 6L, 4L, 12L, 7L, 5L)), .Names = c("y1", "x1", "y2", "x2", 
"y3", "x3"), class = "data.frame", row.names = c(NA, -11L))

ペアを使用した相関プロット

# based mostly on http://gallery.r-enthusiasts.com/RGraphGallery.php?graph=137
panel.plot <- function(x, y) {
    usr <- par("usr"); on.exit(par(usr))
    par(usr = c(0, 1, 0, 1))
    ct <- cor.test(x,y)
    sig <- symnum(ct$p.value, corr = FALSE, na = FALSE,
                  cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1),
                  symbols = c("***", "**", "*", ".", " "))
    r <- ct$estimate
    rt <- format(r, digits=2)[1]
    cex <- 0.5/strwidth(rt)

    text(.5, .5, rt, cex=cex * abs(r))
    text(.8, .8, sig, cex=cex, col='blue')
}
panel.smooth <- function (x, y) {
      points(x, y)
      abline(lm(y~x), col="red")
      lines(stats::lowess(y~x), col="blue")
}
pairs(df, lower.panel=panel.smooth, upper.panel=panel.plot)

ggpairs を使用した相関プロット

4

1 に答える 1

13

GGally 1.0.1 用に編集

paramsは非推奨になったため、次のように使用しwrapます。

ggpairs(df[, 1:2], 
        upper = list(continuous = wrap("cor", size = 10)), 
        lower = list(continuous = "smooth"))

ここに画像の説明を入力

元の答え

複雑なプロットのカスタマイズは、パラメーター リストから常に利用できるとは限りません。それは当然です。覚えておくべきパラメーターが多すぎます。したがって、信頼できる唯一のオプションは、ソースを変更することです。これは、プロジェクトがgithub でホストされている場合に特に便利です。

これは、フォークされた repoで作成された、最初の簡単な変更です。コードを更新して以下のプロットを生成する最も簡単な方法は、関数をコピーしてグローバル環境に貼り付け、名前空間ggally_corで同じ関数をオーバーライドすることです。GGally

# ggally_cor <- <...>
assignInNamespace("ggally_cor", ggally_cor, "GGally")
ggpairs(df[, 1:2], 
        upper = list(params = c(size = 10)), 
        lower = list(continuous = "smooth"))

ここに画像の説明を入力

テキスト ラベルを削除し、有意性インジケーターを追加しました。ただし、これらは以前にマッピングされているため、色とサイズの変更はそれほど簡単ではありません。私はまだそれについて考えていますが、アイデアを理解して、さらにカスタマイズを進めることができます.

編集:コードを更新しました。最新のコミットを参照してください。ラベルのサイズを相関の絶対値にマッピングするようになりました。別の色が必要な場合は、同様のことを行うことができますが、これはおそらくあまり良い考えではないと思います.

ここに画像の説明を入力

于 2014-02-13T07:32:15.083 に答える