Я хочу создать ggplot, в котором статистический параметр изменяется в соответствии с эстетически отображаемым фактором. В частности, я хотел бы создать контурный график с использованием stat_density2d(), я бы хотел отобразить дискретный коэффициент в цвет, и я бы хотел указать разные значения разрыва для каждого уровня фактора.ggplot2: может ли неэстетичный параметр варьироваться в зависимости от фактора?
Вот минимальный рабочий пример:
d <- data.frame(x=c(rnorm(500), rnorm(500, 2)), y=rnorm(1000), z=c(rep("a", 500), rep("b", 500)))
ggplot(d, aes(x, y, fill=z)) +
stat_density2d(breaks=.05, geom="polygon", alpha=.5)
Это то, что я буду за исключением перерывов идентичны по факторам. Я ищу способ указать разные значения разрыва для каждого фактора. Один из способов сделать это было бы создать отдельный слой для каждого фактора:
ggplot() +
stat_density2d(data=d[d$z=="a",], aes(x, y), breaks=.05, geom="polygon", alpha=.5, fill="red") +
stat_density2d(data=d[d$z=="b",], aes(x, y), breaks=.1, geom="polygon", alpha=.5, fill="blue")
Но это не работоспособна, потому что я потерял легенду, и это слишком громоздким для случаев с более чем два фактора уровни.
Я хотел бы объединить преимущества этих двух случаев. Я почти уверен, что видел способ сделать то, что я пытаюсь сделать, но теперь, похоже, не могу найти его, поскольку это актуально. У кого-нибудь есть мысли о возможном решении?
Я ничего не видел, как способ сделать это внутри ggplot, но Я думаю, вы могли бы сделать это довольно легко либо путем (а) предварительной обработки ваших данных, либо (б) преобразования ваших данных. – Gregor