Я пытаюсь затенить несколько областей интереса на точечной диаграмме. Основываясь на этом ответе, я считаю, что вынужден чтобы оставить начальный вызов ggplot()
пустым и предоставить вызовы geom_rect()
перед вызовом geom_point()
. У меня все это работает. Однако я не могу применить фасет на основе данных, переданных в geom_point()
.
Следующее правильно отображает мои данные (диаграмма рассеяния по красным и синим областям разных размеров):
ggplot() +
geom_rect(aes(xmin=885, xmax=1544, ymin=-Inf, ymax=Inf), alpha=.2, fill = "red") +
geom_rect(aes(xmin=1858, xmax=2580, ymin=-Inf, ymax=Inf), alpha=.2, fill = "blue") +
geom_point(data=df, aes(x=Position, y=Max_Freq))
Однако все следующее приводит к следующим ошибкам:
+ facet_wrap(~Replicate)
#Error in if (empty(data)) { : missing value where TRUE/FALSE needed
+ facet_wrap(data~Replicate)
#Error in combine_vars(data, params$plot_env, rows, drop = params$drop):
# At least one layer must contain all variables used for facetting
+ facet_wrap(data$Replicate)
#Error in data$Replicate : object of type 'closure' is not subsettable
В других графах, когда df предоставляется в вызове ggplot()
(т.е. ggplot(df, aes(x=Position, y=Max_Freq)
), первая опция правильно разделяет данные. По общему признанию, я не очень хорошо разбираюсь в R, но похоже, что это должно иметь простое решение.
annotate
сgeom = "rect"
вместоgeom_rect()
или поместить данные прямоугольника в отдельный data.frame и использовать его для этих слоев. Любая из этих опций позволяет определить глобальный набор данных, а не повторять построение прямоугольников. - person aosmith   schedule 29.06.2018