2017-09-19 12 views
2

私はR/gplot2をかなり使い慣れており、外出先でも学習しています。うまくいけば私は何かが明らかに欠けているわけではない!ggplotを使ってプロットのタイトル幅を自動的に調整

私はgowplot2を使っていくつかの異なるプロットを作成しようとしていますが、プロットを横に並べてプロットの数値とキャプションを追加するために、関数plot_gridをcowplotパッケージからレイアウトしています。問題は、生成されたプロットが小さなウィンドウに表示されるか、または複数のプロットが互いに隣り合っている場合、2つのプロットのタイトルが重複することがあるということです。この問題を解決するため、タイトルのテキストサイズを一定にしたかったので、私はanother threadにあるコードを使用して長すぎるタイトルに改行を自動的に挿入しようとしました。

次のコードを使用すると、必要な改行を挿入してタイトルを特定の幅にすることは簡単にできますが、問題は幅の数値を入力する必要があることです。プロットの数に応じて、私はこの値を挿入していますが、もちろん変化します。私はもちろん、私のコードを調べて、それが正しい値になるまでプロットの各セットの幅を手動で設定することができましたが、このプロセスを自動化して、タイトルの幅が自動的にx軸の幅。とにかくこれをRで実装するのですか?

#automatically line break and add titles 
    myplot_theme1 = function (plot, x.title = NULL, y.title = NULL, plot.title = NULL) { 
     plot + 
     labs(title = paste(strwrap(plot.title, width = 50), collapse = "\n"), 
      x = x.title, 
      y = y.title) 
    } 


    # generate an example plot 
    data_plot <- data.frame(x = rnorm(1000), y = rnorm (1000)) 
    plot1 <- ggplot(data_plot, aes(x = x, y = y)) + geom_point() 
    title <- "This is a title that is very long and does not display nicely" 
    myplot_theme1(plot1, plot.title = title) 

My test plot

私が探して試してみましたが、私は私が探していますどのような対処するように見える任意の解決策を発見していません。 only solution私はそれがgridDebugというパッケージに基づいていると見ていました。このパッケージは私のオペレーティングシステムでもサポートされていないようですが(MacOS Sierra Version 10.12.6)、インストールしようとすると次のエラーメッセージが表示されるので、私は次のエラーメッセージを受け取ります:

Warning in install.packages:dependencies 「グラフ」、「Rgraphvizは」

利用できず、CRAN package documentationには、パッケージが私の以前のオペレーティングシステムだったMacOSのエル・キャピタンのためにも利用できないと述べています。誰かがこの問題を引き起こしていることを知っていれば、上記のスレッドから解決策を試すことができます。

+0

プロット出力を '' 'div'''の中に入れようとしましたか? – amrrs

+0

いいえ、私はしていません。私はdivと正確に何を意味するのか分かりませんか?私はそれを検索しようとしましたが、明らかに正しい状況で検索していません。私はいくつかのより多くの情報を見つけることができるヒント? – Sophia

答えて

0

タイトルの文字数に基づいてテキストのサイズを調整するのが理想的な解決策ではないでしょう。 themeを使用してggplotプロパティを調整できます。この場合、plot.title(変数ではなくテーマプロパティ)を調整します。 plot.titleの要素はsizeで、水平方向の調整はhjustです。後者の範囲は[0,1]です。

# generate an example plot 
data_plot <- data.frame(x = rnorm(1000), y = rnorm (1000)) 
plot1 <- ggplot(data_plot, aes(x = x, y = y)) + geom_point() 
title1 <- "This is a title that is very long and does not display nicely" 
title2 <- "I'm an even longer sentence just test me out and see if I display the way you want or you'll be sorry" 

myplot_theme1 = function (plot, x.title = NULL, y.title = NULL, plot.title = NULL) { 
     plot + 
     labs(title = plot.title, 
      x = x.title, 
      y = y.title) + 
     theme(plot.title = element_text(size=800/nchar(plot.title), hjust=0.5)) # 800 is arbitrarily chosen 
    } 

myplot_theme1(plot1, plot.title = title1) 
myplot_theme1(plot1, plot.title = title2) 
+0

悲しいことに、私は定数を維持するためにテキストサイズが必要なので、私の問題は解決しません(プロットはレポート用で、Figureタイトルはすべて標準化されたテキストフォントを持つ必要があります)。ありがとう、結構です! – Sophia

+0

テキストサイズが同じでなければならない場合は、上記と同様の考え方、つまり、タイトルの文字数に応じた値でプロットの幅を調整します。 'strwrap(plot.title、width = nchar(plot.title)* X)'のようなもの ' – CPak

+0

私は別の解決法を見つけられなかったら、それは私のプロットの一部を見せるので、伸ばした。多分、誰かがx軸の幅を取得する方法を提案するでしょう。 – Sophia

関連する問題