У меня есть данные, которые в основном сосредоточены в небольшом диапазоне (1-10), но есть значительное количество точек (например, 10%), которые находятся в (10-1000). Я хотел бы построить гистограмму для этих данных, которая будет сосредоточена на (1-10), но также покажет данные (10-1000). Что-то вроде логарифмической шкалы для гистограммы.
Да, я знаю, это означает, что не все ящики равного размера
Простой hist(x)
дает
в то время как
hist(x,breaks=c(0,1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2,3,4,5,7.5,10,15,20,50,100,200,500,1000,10000)))
дает
ни один из них не является тем, что я хочу.
Обновление следуя ответам здесь, я сейчас производю то, что почти точно то, что я хочу (я пошел с непрерывным графиком вместо гистограммы):
breaks <- c(0,1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2,4,8)
ggplot(t,aes(x)) + geom_histogram(colour="darkblue", size=1, fill="blue") + scale_x_log10('true size/predicted size', breaks = breaks, labels = breaks)![alt text][3]
единственная проблема заключается в том, что я хотел бы сопоставлять масштаб и фактические графики. Есть два варианта для этого: один просто использует фактические поля на графиках (как?), А затем получает "уродливые" метки оси x, такие как 1.1754,1.2985 и т.д. Другая, что я предпочитаю, - это контролировать фактические полевые поля, чтобы они соответствовали разрывам.