Положите разрыв в Y-оси гистограммы
Я не уверен точно, что назвать это, но я пытаюсь добиться своего рода эффекта "сломанной гистограммы" или "оси": http://gnuplot-tricks.blogspot.com/2009/11/broken-histograms.html (пример находится в gnuplot) с R.
Похоже, что я должен использовать функцию gap.plot()
из пакета plotrix
, но я видел только примеры этого с разбросом и строками. Я смог добавить перерыв в поле вокруг моего заговора и поставить там зигзаг, но я не могу понять, как перемасштабировать мои оси, чтобы увеличить часть ниже перерыва.
Все дело в том, чтобы показать верхнее значение для одного действительно большого бара в моей гистограмме, а также увеличить масштаб большинства моих ящиков, которые значительно короче. (Да, я знаю, что это потенциально может ввести в заблуждение, но я по-прежнему хочу сделать это, если это возможно)
Любые предложения?
Обновление 5/10/2012 1040 EST:
Если я сделаю регулярную гистограмму с данными и использую < -, чтобы сохранить ее в переменной (hdata <- hist(...)
), я получаю следующие значения для следующих переменных:
hdata$breaks
[1] 0.00 0.20 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.30 0.31 0.32 0.33
[16] 0.34 0.35 0.36 0.37 0.38 0.39 0.40 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48
[31] 0.49 0.50 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.60 0.61 0.62 0.63
[46] 0.64 0.65 0.66 0.67 0.68 0.69 0.70 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78
[61] 0.79 0.80 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.90 0.91 0.92 0.93
[76] 0.94 0.95 0.96 0.97 0.98 0.99 1.00
hdata$counts
[1] 675 1 0 1 2 2 0 1 0 2
[11] 1 1 1 2 5 2 1 0 2 0
[21] 2 1 2 2 1 2 2 2 6 1
[31] 0 2 2 2 2 3 5 4 0 1
[41] 5 8 6 4 10 3 7 7 4 3
[51] 7 6 16 11 15 15 16 25 20 22
[61] 31 42 48 62 57 45 69 70 98 104
[71] 79 155 214 277 389 333 626 937 1629 3471
[81] 175786
Я считаю, что хочу использовать $breaks
как ось x и $counts
как ось y.
Ответы
Ответ 1
Вы можете использовать gap.barplot
из пакета plotrix.
# install.packages('plotrix', dependencies = TRUE)
require(plotrix)
example(gap.barplot)
или
twogrp<-c(rnorm(10)+4,rnorm(10)+20)
gap.barplot(twogrp,gap=c(8,16),xlab="Index",ytics=c(3,6,17,20),
ylab="Group values",main="Barplot with gap")
Вы дадите это,
![example(gap.barplot)]()
обновление 2012-05-09 19:15:42 PDT
Можно ли использовать facet_wrap
с "free"
(или "free_y"
) scales
? Таким образом, вы сможете сравнивать данные рядом друг с другом, но иметь разные шкалы y
Вот мой быстрый пример,
library('ggplot2')
source("http://www.ling.upenn.edu/~joseff/rstudy/data/coins.R")
coins$foo <- ifelse(coins$Mass.g >= 10, c("Low"), c("hight"))
m <- ggplot(coins, aes(x = Mass.g))
m + geom_histogram(binwidth = 2) + facet_wrap(~ foo, scales = "free")
Вышеупомянутое даст вам это,
![enter image description here]()
Ответ 2
Это работает:
gap.barplot(hdata$counts,gap=c(4000,175000),xlab="Counts",ytics=c(0,3500,175000),
ylab="Frequency",main="Barplot with gap",xtics=hdata$counts)