私はggplot2でvs.単純なboxplotをプロットしようとしています。私は、土地利用クラスに対して種の豊富さを持っています。ただし、データには2つのNAがあります。いくつかの奇妙な理由で、RによってNAとして理解されている場合でも、それらはプロットされています。それらを削除するための提案はありますか?
私が使用しているコードは:
ggplot(data, aes(x=luse, y=rich))+
geom_boxplot(mapping = NULL, data = NULL, stat = "boxplot", position = "dodge", outlier.colour = "red", outlier.shape = 16, outlier.size = 2, notch = F, notchwidth = 0.5)+
scale_x_discrete("luse", drop=T)+
geom_smooth(method="loess",aes(group=1))
ただし、グラフにはルセのNAが2つ含まれています。残念ながら、画像を投稿することはできませんが、NAバーがグラフに追加されていることを想像してください。
コードの最初の行でsubset()
関数を使用してみてください
ggplot(data=subset(data, !is.na(luse)), aes(x=luse, y=rich))+
で示唆されているように ggplotからのNAの除去
上記のコメントを使用して!is.na()
とfilter()
をtidyverse/dplyrから組み込むための正式な回答を次に示します。 NAのフィルタリングなどの基本的な整然とした操作がある場合は、提案されているようにggplot
呼び出しで直接実行して、新しいデータフレームの作成を回避できます。
ggplot(data %>% filter(!is.na(luse)), aes(x = luse, y = rich)) + geom_boxplot()
Dplyr/tidyverseでfilter()
関数を使用することもできます。
data %>% filter(is.na(luse) == FALSE) %>%
ggplot(aes(x=luse, y=rich)) +
geom_boxplot()
この方法では、新しいオブジェクトを作成する必要はありません。