кандидат исторических наук() ошибка: 'ломает' не охватывают спектр 'сведения' и 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 4

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, и нет никаких проблем! Конечно, значения счетчиков меняются, но большинство скорее всего это не заметно на вашем сюжете для презентации.