Удалить неиспользуемые уровни факторов из линейчатого графика 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()
Я получаю это:
Мне нравятся только имена, которые имеют соответствующие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 вектор во всем фрейме данных.