0

特定の命名規則を使用して CSV ファイルから生成されるいくつかの変数を常にグラフ化しているデータ セットを使用しています。たとえば、次のようなものがあります。

p <- ggplot(plot_df, aes(x=ms, y=bandwidth)) + geom_line()

デフォルトでは、グラフの x と y のタイトルはそれぞれ 'ms' と 'bandwidth' になります。私ができるようにしたいのは、次のようなこれらのマッピングのリストを持つ関数を定義することです:

"bandwidth"->"Bandwidth (GB/s)"
"ms"->"Time (ms)"

pしたがって、本質的に実行される関数にフィードできます。

p + xlab("Time (ms)") + ylab("Bandwidth GB/s")

ラベルがどうあるべきかを指定し続ける必要はありません。これを行うには、何らかの方法で x と y のタイトルに文字列としてアクセスする必要があります。からこの情報を取得する方法を理解するのに苦労していますp

編集: 通常、y 軸は溶融のために「値」として出力されると思いますが、議論のために、今のところ x 軸を実行しているとしましょう。

4

1 に答える 1

6

それらはに保存されp$mappingます(を見てくださいstr(p)

文字列操作で何か特別なことをしたい場合を除いて、変数名と正しいラベルを変換するには、ルックアップ テーブルが最適なオプションかもしれません。

例えば

d <- data.frame(x = 1:5, z = 12)

p <- ggplot(d, aes(x=x, y = z)) + geom_point()

labels.list <- list('x' = 'X (ms)', 'z' = 'Hello something')

p + xlab(labels.list[[as.character(p$mapping$x)]]) +   
    ylab(labels.list[[as.character(p$mapping$y)]])

ここに画像の説明を入力

これを関数に書き込むことができます

label_nice <- function(ggplotobj, lookup) { 
   .stuff <- lapply(ggplotobj$mapping, as.character)
   nice <- setNames(lookup[unlist(.stuff)], names(.stuff))
   labs(nice)
}
# this will give you the same plot as above
p + label_nice(p, labels.list)
于 2012-11-09T05:26:15.937 に答える