Исправить ширину стержня в фасетках ggplot2 - PullRequest
0 голосов
/ 15 октября 2018

Вот пример моих данных.У меня есть несколько разных данных датчика (Var1), разбитых по датчику (Var2).Вот воспроизводимый набор данных.

var.sens1 <- structure(list(Var1 = structure(c(9L, 9L, 9L, 9L, 9L, 1L, 2L, 
                                           9L, 9L), 
                                         .Label = c("bathymetry", "current", "deep scattering layer", 
                                                    "frontal data", "imagery", "ocean productivity", 
                                                    "salinity",  "sea surface height", "sea surface temperature",
                                                    "vessel", "wind"), 
                                         class = "factor"), 
                        Var2 = structure(c(1L, 2L, 3L, 4L, 7L, 8L, 8L, 8L, 10L), 
                                         .Label = c("AMSR-E", "AVHRR", "CZCS", "Imager", 
                                                    "IRS-P4 OCM", "MERIS", "MODIS", "not specified", 
                                                    "OCI", "SeaWiFS", 
                                                    "SeaWinds"), class = "factor"), 
                        Freq = c(4L, 37L, 1L, 3L, 20L, 4L, 20L, 26L, 2L)), 
                   row.names = c(9L, 20L, 31L, 42L, 75L, 78L,79L, 86L, 108L), 
                   class = "data.frame")

Затем я использую этот код для фасетной обработки (а не для столбчатой ​​диаграммы) моих данных.

vp <- ggplot(var.sens1, aes(x=Var2, y=Freq, fill=Var1, label=Freq)) + 
  geom_bar(stat="identity")

vp + facet_wrap( ~ Var1, ncol=3, scales="free_y") +
  coord_flip() +
  theme_light()+
  theme(legend.position="none") +
  xlab("Sensor") + ylab("Frequency")

Я использую scale_y = free, чтобы удалить все ненужные пробелы на графике.И получите следующий график.

enter image description here

Однако полосы пропускания имеют разные размеры.Кто-нибудь знает, как фиксировать ширину стержня при фасовке?Исправление полосы пропускания в geom_bar, похоже, не работает.Также не используются geom_col с position_dodge2 и сохраняются в соответствии с рекомендациями здесь .См. Код и изображение ниже.

vp <- ggplot(var.sens1, aes(x=Var2, y=Freq, fill=Var1, label=Freq)) + 
  geom_col(position = "dodge")

vp + 
facet_grid(~Var1, scales = "free_y")+
coord_flip() +
theme_light()+
theme(legend.position="none") +
xlab("Sensor") + ylab("Frequency")

Я бы предпочел использовать facet_wrap над сеткой фасетов, чтобы у меня не было одной длинной серии графиков (у меня есть несколько переменных, которые нуждаются в графике в моем наборе данных, а не толькотри показаны).

enter image description here

...