На графике гистограммы отсутствуют данные - PullRequest
2 голосов
/ 30 апреля 2019

Я пытаюсь создать гистограмму, которая включает много повторяющихся значений в одном из случаев. Одна из точек данных не представлена ​​на графике. Вот самое маленькое, простейшее подмножество, которое я смог найти и которое по-прежнему воспроизводит мою проблему.

cleanVar <- c(rep(1,9),1.25,1.5)
plot_ly(data.table(cleanVar),
x = ~cleanVar,
type = "histogram")

На приведенном выше графике показаны только два бара. Один центрирован на 1 высоты 9, а другой центрирован на 1,2 высоты 1. Также странно, что при наведении курсора отображается «1» для первого бара, несмотря на то, что он охватывает диапазон [.9,1.1], и он показывает «1,25» для второго бара, несмотря на то, что он охватывает диапазон [1.1,1.3].

Если мы изменим 1 на повторение только 8 раз cleanVar <- c(rep(1,8),1.25,1.5), так что в гистограмме будет 10 полных значений, это будет работать лучше, но, тем не менее, три создаваемых им бина будут иметь ширину 0,25 в соответствии с наведением. более, но они имеют ширину всего 0,2 на самом графике.

Что делает заговор? Как я могу правильно показать 3 бункера высотой 9,1,1 и шириной 0,25? параметры биннинга в layout() не работают.

1 Ответ

0 голосов
/ 13 мая 2019

По умолчанию в графическом виде используется следующая процедура для определения ячеек:

start:

Устанавливает начальное значение для ячеек оси x.По умолчанию используется минимальное значение данных, смещенное вниз, если необходимо, чтобы получить хорошие круглые значения и удалить неоднозначные края бина.Например, если большая часть данных является целыми числами, мы сдвигаем ребра ячейки на 0,5 вниз, поэтому size из 5 будет иметь значение по умолчанию start, равное -0,5, поэтому ясно, что 0-4 находятся в первом ячейке,5-9 во втором, но непрерывные данные получают начало 0 и бины [0,5), [5,10) и т. Д. Даты ведут себя аналогично, и start должна быть строкой даты.Для данных категории start основано на серийных номерах категории и по умолчанию равно -0,5.Если несколько неперекрывающихся гистограмм совместно используют подзаговор, первое явное значение start используется точно, а все остальные сдвигаются вниз (при необходимости), чтобы отличаться от этого целым числом бинов.

end:

Устанавливает конечное значение для бункеров оси x.Последний бин может не заканчиваться точно при этом значении, мы увеличиваем край бина на size с start, пока не достигнем или не превысим end.По умолчанию используется максимальное значение данных.Как и start, для дат используется строка даты, а для данных категории end основана на серийных номерах категории.

Вы можете найти эту информацию с помощью:

library(listviewer)
schema(jsonedit = interactive())

Перемещение осуществляется следующим образом: объект ► трассы ► гистограмма ► атрибуты ► xbins ► start

Чтобы избежать поведения по умолчанию, просто установите переменную x в factor:

library(plotly)
library(data.table)

cleanVar <- c(rep(1, 9), 1.25, 1.5)
plot_ly(data.table(cleanVar),
        x = ~factor(cleanVar),
        type = "histogram")

Результат:

Result

...