Ответ 1
Я рассмотрел два решения.
1)
ggplot(data = d, aes(x, y)) +
geom_point() +
facet_grid(z~.,scales="free_x")
Работает, но дает тот же результат, что и без scales="free"
.
2)
library(gridExtra)
p1 <- ggplot(data = d[d$z==1,], aes(x, y)) + geom_point()
p2 <- ggplot(data = d[d$z==2,], aes(x, y)) + geom_point()
p3 <- ggplot(data = d[d$z==3,], aes(x, y)) + geom_point()
p4 <- ggplot(data = d[d$z==4,], aes(x, y)) + geom_point()
p5 <- ggplot(data = d[d$z==5,], aes(x, y)) + geom_point()
grid.arrange(p1,p2,p3,p4,p5,ncol=1)
Это не работает. Когда вы планируете отдельные сюжеты, вы обнаружите, что p5
невозможно построить. Это связано с тем, что для z=5
y
только NA.
Попытка использовать свободную шкалу, когда есть только NA, не очень логична. По-моему, это концептуальная проблема. Причиной этого является то, что без использования аргумента scales="free"
используются шкалы другого подзаголовка (-ов). При использовании аргумента scales="free"
(или free_x
или free_y
) шкалы каждого подзадачи будут установлены в соответствии с длиной шкалы. Когда есть только NA, длина шкалы не может быть определена, что в свою очередь вызывает сообщение об ошибке.
То, что работает free_x
(хотя и дает тот же результат).
В заключение: если у одной из ваших групп есть только NA, вы не можете использовать scales="free"
в своем заговоре. Следовательно, у вас есть два варианта (на мой взгляд):
- Опуская аргумент
scales="free"
для получения нужных пустых подзаговоров. - Замена NA на
0
, но это только решение, когда у вас нет отрицательных значений.