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

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

Другие вопросы SO, похоже, касаются того, как сохранить неиспользуемые уровни факторов. Я бы вообще хотел, чтобы мой удалили. У меня есть несколько имен переменных и несколько столбцов (широкого формата )атрибутов переменных, которые я использую для создания многочисленных гистограмм. Вот воспроизводимый пример:

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

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

19
задан Community 23 May 2017 в 12:17
поделиться