Удалить неиспользуемые уровни факторов из линейчатого графика ggplot

Я хочу сделать противоположностьэтот вопроси своего рода противоположностьэтот вопросХотя это касается легенд, а не самого сюжета.

Другие вопросы 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()

Я получаю это:

enter image description here

Мне нравятся только имена, которые имеют соответствующиеnна моем гистограмме (например, не было бы пустого места для B).

Повторное использование кода базового графика будет довольно простым, если я смогу просто изменить имя выходного файла иy=var немного. Я не хотел бы поднастраивать мой фрейм данных, чтобы использовать, по возможности, уровни снижения для каждого графика!

Update based on the na.omit() suggestion

Рассмотрим пересмотренный набор данных:

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.omit() для построенияvar1 потому что там присутствует NA. Но так как na.omit проверяет наличие значений дляall columnsСюжет удаляетA а так как он имеет АН вvar3, Это больше похоже на мои данные. У меня 15 общих ответов с НС. Я хочу удалить только те уровни факторов, которые не имеют значений дляcurrent построенный Y-вектор, а не то, что есть NA вany вектор во всем фрейме данных.

Ответы на вопрос(2)

Ваш ответ на вопрос