問題タブ [grob]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - プロット領域の正確な領域にannotation_custom()でグロブを配置する方法は?
次の[ベースR]プロットをggplot2で再現しようとしています
私はこれのほとんどを管理しましたが、現在私を困惑させているのは、それぞれのラベルが付いたプロットの右側にあるマージン ラグ プロットを結合する線分の配置です。ラベルは (下の 2 番目の図で) 経由anotation_custom()
で描画され、@baptiste のクリッピングをオフにして、プロット マージンに描画できるようにするトリックを使用しました。
多くの試みにもかかわらずsegmentGrobs()
、デバイス内の目的の場所に配置して、正しいラグの目盛りとラベルを結合することができません。
再現可能な例は
ビーガンがインストールされていない場合dput
は、質問の最後に強化されたオブジェクトのを追加しfortify()
、例を実行してfortify()
で簡単にプロットするためのメソッドを追加しggplot()
ます。また、これまでの作業を示すやや長い関数 も含めます。myPlt()
これは、パッケージをロードして を作成できる場合に、サンプル データ セットで使用できますmod
。
私はかなりの数のオプションを試しましたが、線分を正しく配置するために暗闇の中で動揺しているようです.
サンプル データ セットのラベル/セグメントをプロットするという特定の問題に対する解決策を探しているわけではありませんが、セグメントとラベルをプログラムで配置するために使用できる一般的な解決策を探していautoplot()
ますclass(mod)
。線分だけでなく、ラベルもうまくいきました。質問に:
- データ coord から , までのラインを含むセグメント グロブを配置したい場合、 , , 引数はどのよう
xmin
にxmax
使用ymin
されますか?ymax
x0
y0
x1
y1
- おそらく別の方法で尋ねられますが、既知のデータ座標 、 、 の間のプロット領域の外側にセグメントを描画するためにどのように使用します
annotation_custom()
か?x0
y0
x1
y1
プロット領域に古いプロットがあっただけで、プロットの余白にある既知の座標間に線分を追加する方法を示した回答を喜んで受け取ります。
私はの使用に慣れていないannotation_custom()
ので、より良い解決策が利用可能であれば、それも検討します. ただし、プロット領域にラベルを付けることは避けたいと思います。引数annotate()
を介してスケールの x 軸の制限を使用および拡張することで、それを達成できると思います。expand
fortify()
方法_
のdput()
これは からの出力ですfortify.prc(mod)
:
私が試したこと:
私が試したことに基づく図myPlt()
上から作ったのはここmyPlt()
までです。ラベルに描かれた小さな水平の目盛りに注意してください。これらは、上の最初の図の斜めの線分である必要があります。
r - facet_wrap によって生成された空きスペースを使用するには?
n x m
グリッドを形成するファセット プロットがあります。設計上、最後 (右下) のセルは常に空なので、別の ggplot オブジェクトを追加して余分なスペースを利用したいと思います。viewport
私の現在のソリューションは、あまりエレガントではなく、位置とサイズのハードコーディングが必要な低レベルのアプローチに依存しています。
代わりに、空のスペースには他の方法で到達できるとgridExtra
思います。
の最小限の例を次に示しn=m=2
ます。エッジが適切に配置されていないことに注意してください。そのため、ビューポートのパラメーターを手動で調整するには、特に(n, m)
後で変更する場合に面倒です。
r - R のベース プロットにグロブを追加する
splitTextGorb
パッケージRGraphics
からベース プロットを使用して作成した複数行のテキストを追加したいと思います。次のことを試しましたが、うまくいきません (つまり、テキストがプロットに表示されません)。
ベースプロットにテキストを追加するオプションであることは知っていますが、柔軟性があるかどうかにかかわらず、特にmtext
使用したいと思います。splitTextGrob
mtext
grid.text()
どんな助けでも大歓迎です。ありがとうございました!
r - grid.arrange を使用した下部のユニバーサル x 軸ラベルと凡例
grid.arrange を使用して、いくつかのグラフを並べてプロットしようとしています。具体的には、プロットの x 軸のラベルを共有し、下部に凡例を表示したいと考えています。これが私が配置に使用しているコードです(ここでの作業例)、ユニバーサルx軸はありません:
凡例は TableGrob オブジェクトです。ユニバーサル x 軸は、次の行に沿った textGrob である必要があります。
ただし、それをコードに追加すると、凡例が右側に移動します。凡例とラベルの両方を下部に配置するように指定すると、そのうちの 1 つが右側に移動します。したがって、質問は、ユニバーサル x 軸ラベルを下部の凡例と組み合わせる方法はありますか?
r - ggplotGrob()でlapplyを使用するには?
関数 ggplotGrob() を lapply を使用して ggplots のリストに適用しようとしていますが、そこから grob オブジェクトのリストを取得できないようです。このプロジェクトでは、可変数のプロットがユーザー入力に基づいて生成されます。グリッドを動的に生成する方法が必要です。プロットからグロブを定義して、表示前にすべてのチャートに同じ幅を割り当てる必要があります。
たとえば、プロット p1 と p2 があります。手動で行う場合:
私は2つのプロットを取得します。
今私がするなら
エラー メッセージが表示される
ArrangeGrob(..., as.table = as.table, clip = clip, main = main, のエラー: 入力はグロブでなければなりません!
unlist() を使用しようとしましたが、同じエラーが発生しました
最終的には、lapply などを使用してグロブのリストを作成したいと思います。
grid.arrange を使用してすべてのグロブを配置できます。リストから各オブジェクトをグロブとして取得する簡単な手順を忘れているように感じます。誰かがこれを解決しましたか?
ありがとう
r - ggplotGrobの逆?
ggplot オブジェクトをグロブに変換してからレイヤーを変更することにより、オブジェクトを操作する関数があります。関数がグロブではなく ggplot オブジェクトを返すようにしたいと思います。グロブを gg に戻す簡単な方法はありますか?
のドキュメントはggplotGrob
非常にまばらです。
簡単な例:
アップデート:
コメントの質問に答えるために、ここでの動機は、各ファセットのラベル名の値に基づいて、ファセット ラベルの色をプログラムで変更することです。以下の関数はうまく機能します (前の質問の洗礼者からの入力に基づく)。
からの戻り値をcolorByGroup
単なるグロブではなく、ggplot オブジェクトにしたいと考えています。
ここにコードがあります、興味のある人のために
r - Rを使用して、ローカルのpngファイルをWord文書にコピーして貼り付けるにはどうすればよいですか?
PCのさまざまなファイルにきれいに保存された10,000個のpng画像があります。特定のフォルダーに移動し、そのフォルダー内のすべての png ファイルを Word 文書に繰り返しコピーして貼り付けるような関数を作成したいと考えています。これはRで可能ですか?
私はパッケージを見てきましたR2wd
が、悲しいことに RData を取り、そのプロットを単語文書に出力する関数しかありません ( function wdPlot
)。
また、すべてのプロットに対して RData を保存しているため、特定のプロットに関連付けられた RData を単純にロードしてからwdPlot
. 問題は、png を生成したときにプロットがグロブであり、次のようにしたことです。
さて、最初に RI に読み込んでその rp を word 文書に取得しようとすると、単純に次の操作を実行すると、タイトルが拡大されたり、その他のgrid.edit
変更が加えられたプロットが MS Word に出力されません。
繰り返しますが、これらのpngファイルはすべて持っています。さまざまな場合に、それらのサブセットをコピーして Word 文書に貼り付ける必要があります。私は毎回手動でそれを行うのが面倒なので、プログラムにそれをやってもらいたいと思っています。
編集1
したがって、以下の提案に従って、Markdown について読みました。この投稿に続いて、markdownにknitrを使用してローカル画像のサイズを設定する方法は? 私は次の行に沿って何かを書きました:
以下は、結果として得られる Word 文書の内容のスクリーンショットです。どうすればこれを修正できますか? 上記の for ループが実行されるときに、画像がドキュメントに次々と表示されるようにします。
Markdown を使用したのはこれが初めてなので、コメントにリンクされている関連するチュートリアルも非常に役立つ可能性があることに注意してください。
EDIT 2 以下の2番目の回答の例に従いました。ここに私が得た出力があります
ご覧のとおり、画像はなく、html タグのみです。これを修正するにはどうすればよいですか?
r - プロット領域全体ではなく、grid.arrange でグラフの y 軸の高さを設定します
グリッド配置を使用すると、次の問題が発生しました。
すべてのパネル (a、b、c) を同じサイズにしたいのですが、パネル a と b からラベルと目盛りを削除したため (単一の x-軸) グラフ a と b のサイズは大きく、グラフ c のサイズ + c のラベルと目盛りのスペースに等しくなります。ggplot2::facet_grid
y 軸の制限を個別に指定したいので、どちらも使用できません(たとえば、a は 40 まで、b と c は 15 まで)。以下に、この投稿に基づいてこのプロットを生成するために使用される実際の例を示し、プロットを垂直に揃えますが、各プロットの同じ高さを個別に保証する方法についてはわかりません。どんなポインタでも大歓迎です。
LinuxでRを使用しています。私の session.Info() の出力は次のとおりです。