кандидат исторических наук() ошибка: 'ломает' не охватывают спектр 'сведения' и barplot(, бревно = "г") ошибка: 'высота + смещение <= 0
По оси x у меня есть большой объем данных (0: 700) Когда я использую это:
dh <- hist(data)
barplot(dh$counts, log="y", col="white", names.arg=dh$breaks[-1])
Я получаю такой график:
Но я хочу получить меньшие значения разрывов. Я попытался изменить значение Break, но получил ошибку
Ошибка в hist.по умолчанию(данные, перерывы = сл(5, 700, в = 10)) : некоторые сведения не считая, может быть, "ломает" не охватывают диапазон от 'данных'
Последующие действия:
После установки breaks = seq(0, 700, by = 10)
в качестве ответ предполагает, что hist()
работает нормально, но barplot()
дает мне ошибку:
Ось журнала ошибок: по крайней мере одно значение ' высота + смещение
Что случилось?
1 ответ:
Оригинальный выпуск с
hist
:Я думаю, что вы должны установить разрывы
breaks = seq(0, 700, by = 10)
, Как вы сказали в своем комментарии, чтоrange(data)
сообщаетc(0, 690)
.
hist.default()
сообщит об ошибке, если разрывы не охватывают диапазон ваших данных. Ваша текущая настройка:breaks = seq(5, 700, by = 10)
имеет минимум 5 и максимум 695, что немного недостаточно на левой границе.Я могу легко воспроизвести ошибку, которую вы видели:
set.seed(0); x<-rexp(1000,1) range(x) # [1] 0.001700975 6.584532959 hist(x, breaks = seq(0.002, 7.002, by = 0.5))
Ошибка в hist.default (x, breaks = seq (0.002, 7.002, by = 0,5)) : некоторые "x" не учитываются; возможно, "разрывы" не охватывают диапазон "x"
Последующая проблема с
barplot
:Ось журнала ошибок: по крайней мере одно значение ' height + offset
Я могу догадаться, что произошло. Проверьте
min(dh$counts)
, и я думаю, что это 0. Вы знаете,log(0) = -INF
, и вы не можете построить его.Да, у меня есть значение 0. но почему он работает до того, как я использую seq(0, 700, by = 10)?
Почему бы не проверить
foo <- hist(data, plot = FALSE)
, и посмотреть, что бин клетки и ломает его выбирает? Есть вероятность, чтоhist()
мудро выбрал размер ячейки, так что счет 0 не происходит.Когда вы пытаетесь уточнить автоматически выбранный размер ячейки, вы должны стремиться достичь того же, а не набирать 0. (Ну, если вы не устанавливаете
log = "y"
вbarplot()
, то это действительно не имеет значения.)Я также могу дать вам трюк / обман. Вы могли бы сделать
barplot(dh$counts + 1, log = "y", ...)
. После добавления 1 минимальное значениеlog
равно 0, и нет никаких проблем! Конечно, значения счетчиков меняются, но большинство скорее всего это не заметно на вашем сюжете для презентации.