r - ggplot facet_wrap, считывая все входные данные как NaN (с петлевым фильтром)
10 просмотра
1 ответ
Я пытаюсь создать серию диаграмм ridgeline из набора данных, отфильтрованного в соответствии с циклом for.
# create list object to hold charts
print_list=list()
# loop through dataset and create charts based on facility type
for (i in data$fac_type) {
data_filter <- filter(data, fac_type == i)
plot <- ggplot(data=data_filter,aes(x=average,y=category, fill=category)) +
scale_fill_manual(values= cols) +
geom_density_ridges(
rel_min_height=0.01,scale=0.9,
jittered_points = TRUE,
position=position_points_jitter(width=0.05, height=0),point_shape="|",point_size=2,point_alpha=0.7, alpha=0.7) +
theme_ridges() +
theme(legend.position="none",axis.text.y = element_text(angle=45, hjust=1)) +
stat_density_ridges(quantile_lines = TRUE,alpha=0.7,scale=0.9,quantiles=2) +
scale_x_continuous(limits=c(0,1),labels = scales::percent) +
facet_wrap(~season)
print_list[[i]] = plot
}
# print the charts from the list
for (i in data$fac_type) {
data_filter <- filter(data, fac_type == i)
filename=paste("./Charts/National - ",data_filter$fac_type,".jpeg",sep="")
jpeg(filename,width=9,height=7,units="in",bg="white",quality=1,res=300,type=c("quartz"))
print(print_list[[i]])
dev.off()
}
Когда я запускаю выше, не facet_wrap
получая счастливых данных, хрустящих сообщений "Picking joint bandwidth of 0.0182"
и совершенно точных диаграмм
Работа без привязки, отфильтрованная диаграмма
Но реализация facet_wrap дает нулевые наборы данных "Picking joint bandwidth of NaN"
и соответствующие пустые грани.
Пустая фильтрованная, граненая диаграмма
Любопытно, что огранка работает отлично, если я использовал данные, не отфильтрованные.
Рабочая факсированная нефильтрованная диаграмма
Если я вставляю print(data_filter)
в исходный цикл, он отображает правильно отфильтрованные наборы данных, например, ниже
Отфильтрованный фрагмент данных
Поэтому я пришел к выводу, что проблема заключается в том, что facet_wrap каким-то образом искажает данные при переупаковке диаграмм. Тяжелый поиск в Google и поиск SO не дали никаких подсказок, почему это может быть. Я подозреваю, что это связано с внутренними разработками ggplot, в которых я довольно новичок.
Может кто-нибудь мне помочь? Или предложить альтернативный, более элегантный способ сделать это? Мне нужно повторить эту операцию для нескольких наборов данных, поэтому мне нужно масштабируемое решение.
В качестве заключительной заметки, я знаю, что, возможно, более элегантно, чтобы выполнить вышеприведенные функции и специальные функции - и откройте предложения. Из-за нехватки времени я не смог понять это сам.
Автор: rbanick Источник Размещён: 17.05.2019 03:52Ответы (1)
0 плюса
Если я правильно понял вашу проблему, проблема может заключаться в том, что вы фильтруете и / или огранку, используя переменную, которая является фактором. Когда вы фильтруете факторы, уровни факторов остаются неизменными, и это может вызвать проблемы в вашей огранке. Если эти переменные действительно являются факторами, попробуйте добавить droplevels()
вызов после фильтрации и посмотреть, работает ли он.
Вопросы из категории :
- r Как получить доступ к последнему значению в векторе?
- r Пакеты оптимизации для R
- r Есть ли у R такие операторские операции, как Perl qw ()?
- r Библиотека / инструмент для рисования тройных / треугольных графиков
- r Участки без заголовков / надписей в R
- ggplot2 Графики рядом с ggplot2
- ggplot2 Поворотные и интервальные метки на оси ggplot2
- ggplot2 используя stat_function и facet_wrap вместе в ggplot2 в R
- ggplot2 Boxplot schmoxplot: Как изобразить средние и стандартные ошибки, обусловленные коэффициентом R?
- ggplot2 Установите количество столбцов (или строк) в граненом графике
- wrap Как настроить ckeditor, чтобы не переносить содержимое в блок <p>?
- wrap Алгоритм рекурсивного Word Wrap
- wrap Запретить перенос встроенного блока, но разрешить перенос содержимого
- wrap CSS вертикальный центр по кругу
- wrap Почему фильтр the_title () также применяется в заголовке меню?
- facet грани разных размеров, пропорциональные оси x на ggplot 2 r
- facet Как установить количество интервалов в гистограмме эластичного поиска
- facet Исправление порядка граней в ggplot
- facet Объединение новых линий и курсива в метках фасетов с помощью ggplot2
- facet Подсчитать различные значения с помощью эластичного поиска