この質問 の反対と この質問 の反対のことをしたいのですが、それはプロットそのものではなく、凡例についてです。
他のSOの質問は、未使用の因子レベルをkeepする方法について尋ねているようです。多数の棒グラフを作成するために使用している変数属性のいくつかの列(ワイド形式)。再現可能な例を次に示します。
_library(ggplot2)
df <- data.frame(name=c("A","B","C"), var1=c(1,NA,2),var2=c(3,4,5))
ggplot(df, aes(x=name,y=var1)) + geom_bar()
_
私はこれを得る:
対応する変数を持つ名前のみが欲しいnが棒グラフに表示されます(たとえば、Bには空のスペースはありません)。
出力ファイル名と_y=var
_ビットを簡単に変更できれば、ベースプロットコードの再利用は非常に簡単です。可能であれば、各プロットの結果にドロップレベルを使用するためだけに、データフレームをサブセット化する必要はありません。
na.omit()
提案に基づいた更新
改訂されたデータセットを検討してください。
_library(ggplot2)
df <- data.frame(name=c("A","B","C"), var1=c(1,NA,2),var2=c(3,4,5), var3=c(NA,6,7))
ggplot(df, aes(x=name,y=var1)) + geom_bar()
_
NAが存在するため、_var1
_のプロットにna.omit()
を使用する必要があります。ただし、na.omitはall列に値が存在することを確認するため、_var3
_にNAがあるため、プロットはA
も削除します。これは私のデータにより類似しています。私は約15のNAを回答しました。 currentプロットされたyベクトルの値を持たず、anyにNAを持たない因子レベルのみを削除したいデータフレーム全体のベクトル。
1つの簡単なオプションは、データフレームdf
でna.omit()
を使用して、NA
でそれらの行を削除することです。
_ggplot(na.omit(df), aes(x=name,y=var1)) + geom_bar()
_
あなたの更新を考えると、次の
_ggplot(df[!is.na(df$var1), ], aes(x=name,y=var1)) + geom_bar()
_
正常に機能し、_Var1
_のNA
のみを考慮します。 name
とVar
のみをプロットしている場合、それらの変数のみを含むデータフレームにna.omit()
を適用します
_ggplot(na.omit(df[, c("name", "var1")]), aes(x=name,y=var1)) + geom_bar()
_
プロットするときは、データフレームの2列のみを使用していることに注意してください。つまり、data.frame全体を渡すのではなく、関連する列x[,c("name", "var1")]
apply na.omitを使用して不要な列を削除できます。行(Gavin Simpsonが示唆するように)na.omit(x[,c("name", "var1")])
してから、このデータをプロットします。
私のR/ggplotは非常に錆びており、おそらくこれを達成するためのよりクリーンな方法があることを認識しています。