Usuń nieużywane poziomy współczynnika z wykresu słupkowego ggplot

Chcę zrobić przeciwieństwoto pytaniei coś w rodzaju przeciwieństwato pytanie, ale dotyczy to legend, a nie samej fabuły.

Inne pytania SO wydają się pytać o to, jak to zrobićtrzymać niewykorzystane poziomy czynników. Naprawdę chciałbym, żeby mnie usunięto. Mam kilka zmiennych nazw i kilka kolumn (szeroki format) atrybutów zmiennych, których używam do tworzenia wielu wykresów słupkowych. Oto powtarzalny przykład:

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()

Rozumiem:

Chciałbym tylko nazwy, które odpowiadają varnpojawiają się na moim wykresie słupkowym (tak jak w, nie byłoby pustego miejsca na B).

Ponowne użycie podstawowego kodu wydruku będzie całkiem proste, jeśli mogę po prostu zmienić nazwę pliku wyjściowego iy=var kawałek. Nie chciałbym, aby moja ramka danych była podzestawiana tylko po to, aby w miarę możliwości używać poziomów wynikowych dla każdego wykresu!

Aktualizacja oparta nana.omit() sugestia

Rozważ poprawiony zestaw danych:

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()

Muszę użyćna.omit() do kreśleniavar1 ponieważ jest obecny NA. Ale ponieważ na.omit zapewnia, że ​​wartości są obecnewszystkie kolumny, fabuła się usuwaA jak również, ponieważ ma NA wvar3. To jest bardziej analogiczne do moich danych. Mam 15 całkowitych odpowiedzi na temat NAs. Chcę tylko usunąć poziomy czynników, które nie mają wartości dlaobecny wykreślono wektor y, który nie ma NAkażdy wektor w całej ramce danych.

questionAnswers(2)

yourAnswerToTheQuestion