1. ホーム
  2. r

[解決済み] ggplotで列名を指定するための変数の使用方法

2022-05-01 13:27:31

質問

ggplot コマンドがあります。

ggplot( rates.by.groups, aes(x=name, y=rate, colour=majr, group=majr) )

を関数の中に入れています。しかし、私は関数のパラメータを使用して、色とグループとして使用する列を選ぶことができるようにしたいと思います。すなわち、次のようなものが欲しいのです。

f <- function( column ) {
    ...
    ggplot( rates.by.groups, aes(x=name, y=rate, colour= ??? , group=??? ) )
}

そのため、ggplotで使用する列はパラメータによって決定されます。例えば、f("majr")の場合、次のような効果が得られます。

ggplot( rates.by.groups, aes(x=name, y=rate, colour=majr, group=majr) )

しかし、f("gender")については、次のような効果が得られます。

  ggplot( rates.by.groups, aes(x=name, y=rate, colour=gender, group=gender) )

試してみたものもあります。

ggplot( rates.by.groups, aes(x=name, y=rate, colour= columnName , group=columnName ) )

は機能しませんでした。

e <- environment() 
ggplot( rates.by.groups, aes(x=name, y=rate, colour= columnName , group=columnName ), environment=e )

どのように解決するのですか?

を使用することができます。 aes_string :

f <- function( column ) {
    ...
    ggplot( rates.by.groups, aes_string(x="name", y="rate", colour= column,
                                        group=column ) )
}

カラムを文字列として関数に渡す限り、( f("majr") よりも f(majr) ) また、他の列も変更したことに注意してください。 "name""rate" を、文字列にする。

もし、何らかの理由で aes_string に変更することができます(やや面倒ですが)。

    ggplot( rates.by.groups, aes(x=name, y=rate, colour= get(column),
                                        group=get(column) ) )