2017-09-12 13 views
1

私はRでプロットを作成する機能を持っています。私は、機能名と共にユニットを印刷したいと思います。以下はコードです。機能を使用してプロットの単位を印刷する方法は?

library(ggplot2) 
plotfunction <- function(feature, featur_name, feature_unit){ 
    ggplot(aes(x = feature), data = mtcars) + 
    geom_histogram(binwidth = 0.5) + 
    labs(x = paste(featur_name, feature_unit), y = "Count, #") 

} 

plotfunction(mtcars$wt, "Displacement, ", expression({g}/{dm}^{3})) 

この関数は、次のようにプロットを生成します。

enter image description here

答えて

0

は、最も優雅な解決策が、ここに行く:

plotfunction2 <- function(feature_name, feature_unit){ 

    x.lab = paste0("expression(paste('", feature_name, "', ", feature_unit, "))") 

    ggplot(data = mtcars, aes(wt)) + 
    geom_histogram(binwidth = 0.5) + 
    labs(x = eval(parse(text = x.lab))) 
} 

plotfunction2("Displacement, ", "{g}/{dm}^{3}") 

plot

データ入力は、ここで本当の問題の一部ではないので、(私は最初の引数を残し... $との美的マッピングを定義するべきではありませんが、

+0

説明してくださいこの行二重引用符と一重引用符の混在使用を理解することはできません。 $記号**で美的マッピングを定義してはいけませんが(関数に変数名を渡す方法は? – JustCurious

+0

@JustCurious x.lab行の結果は、式(paste( 'Displacement、'、{g}/{dm}^{3})) ''で、有効な式の文字列形式です。 'labs(x = eval(parse(text = x.lab))) 'は' lab {x = expression(paste {' Displacement、 '、{g}/{dm}^{3})になります。 )) ')。 –

+0

'aes()'の中で '$'を使うことは、データセットとその変数間のggplotの美的マッピングに影響します。ここで(https://stackoverflow.com/questions/32543340/behavior-ggplot2-aes-in-combination-with-facet-grid-when-passing-variable-wi)詳しい説明があります。変数名を渡す必要がある場合は、代わりに 'aes_string()'に変数名の文字列バージョンを使用することができます。 [Here](https://stackoverflow.com/questions/23401681/ggplot-aes-string-does-not-work-inside-a-function)は、どのように動作するかの例です。 –

関連する問題