Введите ?hist
в свою консоль, чтобы увидеть документацию. Вы увидите, что ylim
для «диапазон ... значений y». Приведен пример, показывающий, как используется ylim
, hist(x, freq = FALSE, ylim = c(0, 0.2))
. Там вы можете увидеть, что вам нужно дать ylim
вектор, содержащий нижний предел и верхний предел.
С гистограммой вы почти всегда хотите, чтобы нижний предел был равен нулю (отказ сделать это обычно рассматривается как статистический грех). Так, как указано в комментариях выше, вы можете сделать с настройкой ylim=c(0,35)
.
образца с минимальным, например:
#Sets frequencies with which x and y data will appear
yfreq <- c(1:10, 10:1) #frequencies go up to 10 and down again
xfreq <- c(1:7, rep(7, times=6), 7:1) #frequencies go up to 7 and down again
xdata <- rep(1:length(xfreq), times=xfreq)
ydata <- rep(1:length(yfreq), times=yfreq)
par(mfrow=c(2,2))
hist(ydata, breaks=((0:max(ydata)+1)-0.5), ylim=c(0,10),
main="Hist of y with ylim set")
hist(xdata, breaks=((0:max(xdata)+1)-0.5), ylim=c(0,10),
main="Hist of x with ylim set")
hist(ydata, breaks=((0:max(ydata)+1)-0.5),
main="Hist of y without ylim set")
hist(xdata, breaks=((0:max(xdata)+1)-0.5),
main="Hist of x without ylim set")
Таким образом установка ylim
соответственно делает сравнение бок о бок с гистограммой работы лучше.
На практике это удобно делать автоматически, просто обнаружив, что является самым высоким пиком в ваших наборах данных и использует это в вашем ylim
. Как вы это делаете, зависит от того, строите ли вы гистограмму частот (это то, что R делает автоматически, если ваши разрывы равноудалены, если вы не указали иначе) или плотности, но один из способов заключается в создании —, но не в графике — объектов гистограммы и извлеките либо их counts
, либо их density
, если необходимо.
#Make histogram object but don't draw it
yhist <- hist(ydata, breaks=((0:max(ydata)+1)-0.5), plot=FALSE)
xhist <- hist(xdata, breaks=((0:max(xdata)+1)-0.5), plot=FALSE)
#Find highest count, use it to set ylim of histograms of counts
highestCount <- max(xhist$counts, yhist$counts)
hist(ydata, breaks=((0:max(ydata)+1)-0.5), ylim=c(0,highestCount),
main="Hist of y with automatic ylim")
hist(xdata, breaks=((0:max(xdata)+1)-0.5), ylim=c(0,highestCount),
main="Hist of x with automatic ylim")
#Same but for densities
highestDensity <- max(xhist$density, yhist$density)
hist(ydata, breaks=((0:max(ydata)+1)-0.5),
freq=FALSE, ylim=c(0,highestDensity),
main="Hist of y with automatic ylim")
hist(xdata, breaks=((0:max(xdata)+1)-0.5),
freq=FALSE, ylim=c(0,highestDensity),
main="Hist of x with automatic ylim")
вы должны дать нижний и верхний предел .... попробуйте 'ylim = с (0, 35)'. (Вы также можете позволить 'ggplot' выполнять некоторые из этих работ для вас ...' ggplot (yourdataframe, aes (yourvariable)) + geom_histogram() + facet_grid (. ~ Год) ' – user20650