5

コードが非常に混雑するため、ggplot2 でレイアウトを外部化したいと考えています。

さまざまな関数のいくつかのプロットに適用する特定のレイアウトがあるとしましょう。次のようになります。

    scale_fill_gradientn(guide="colourbar",colours=costum.colorbar_sand.blue.green)+
      theme (legend.title = element_text(size = 15,family="Arial"))+
      theme (legend.text = element_text(size = 12,family="Arial",angle=45))+
      theme (legend.position = "bottom")+
      coord_map(projection="mercator");

それを外部ファイルまたはオブジェクトに入れてから、プロット関数に呼び出したいと思います。

次のようにknitrパッケージからread_chunkを試しました。上記の空のコードをRファイルに保存してから、関数に実装しようとしました。したがって、このように関数に書き留めました

    function.xy(...){...some ggplot function...
    read_chunk("some\path")
    }

しかし、うまくいきません。私も試しpaste(read_chunk("some\path"))ましたが、これはうまくいきません。

私が持っていた別のアイデアは、それをオブジェクトとして保存し、テキストを貼り付けるだけでしたが、プレーンテキストオブジェクトとして保存する方法がわからないため、これはうまく機能しませんでした(そのようなものがある場合) . 誰でもこれを行う方法についてアドバイスできますか?

4

3 に答える 3

5

私はこれを2つの方法のいずれかで行います。ニットするファイルで、頻繁に使用されることがわかっているプロット オプションを宣言し、次のようにグループ化された要素をリストに保存します。

plot.option1 <- list(scale_fill_gradient(guide="colourbar",colours=costum.colorbar_sand.blue.green),
                     theme(legend.title = element_text(size = 15,family="Arial"),
                           legend.text = element_text(size = 12,family="Arial",angle=45),
                           legend.position = "bottom"),
                     coord_map(projection="mercator"))

あとは追記するだけです+ plot.option1

例えば:

ggplot(dat, aes(x,y)) + plot.option1

それらがたくさんある場合 (企業のテーマなど) は、それらを別のスクリプトに簡単に配置して、ファイルの先頭にソースを指定して編むことができます。

最小限の例:

plot.opt <- list(scale_color_brewer(palette="Blues"))
ggplot(diamonds, aes(carat, price, color=color)) + geom_point() + plot.opt
于 2013-02-10T20:53:47.800 に答える
5

レイアウト コードを別のチャンクに外部化できます。リポジトリの例 083 (およびその出力) を参照してください。knitr-examplesキーは、 を介したチャンク参照<<>>です。

于 2013-02-10T21:58:17.467 に答える
2

@brandon-bertelsen のものと非常によく似た別のオプションは、カスタム関数を作成することです。

add.my.layout <- function(g) {
    g + scale_fill_gradientn(guide="colourbar",colours=costum.colorbar_sand.blue.green)+
      theme (legend.title = element_text(size = 15,family="Arial"))+
      theme (legend.text = element_text(size = 12,family="Arial",angle=45))+
      theme (legend.position = "bottom")+
      coord_map(projection="mercator")
}

そして、コードで次のことができます:

myggplot <- ggplot(...)
add.my.layout(myggplot)

必要に応じて、外部 R ファイルで関数を定義できます。

于 2013-02-10T20:56:54.297 に答える