Проблема в том, что stat_density
по умолчанию заполняет строку между плотностью и строкой y=0
преобразованных данных. Таким образом, преобразования, изменяющие линию y=0, станут жертвой проблем такого рода. Я лично думаю, что это ошибка в ggplot2
, хотя, поскольку эксперты по графической грамматике, вероятно, утверждают, что y-трансформированные плотности бессмысленны, ошибка может не привлечь много внимания.
Очень неуклюжий обходной путь — вручную добавить смещение к ..density..
, которое вам придется вызывать явно, а затем изменить разрывы, чтобы это выглядело так, как будто вы не сделали ничего странного.
require(ggplot2)
require(scales)
set.seed(0)
xvar <- rnorm(100000)
quartz(height=4,width=6)
ggplot(data.frame(xvar), aes(x=xvar, y=log10(..density..)+4)) +
geom_density(fill='lightblue') +
scale_y_continuous(breaks=c(0,1,2,3,4),
labels=c('0.0001', '0.001', '0.01', '0.1','1'), limits=c(0,4),
name='density')
quartz.save('![StackOverflow_29111741_v2][1].png')
Этот код создает этот график: ![Kludged graph](https://i.stack.imgur.com/jVoxS.png)
person
Curt F.
schedule
18.03.2015