Гистограмма показывает в основном нули, но нулей в данных - PullRequest
2 голосов
/ 28 января 2020

Я бы хотел сгенерировать гистограмму некоторых данных, которые у меня есть, но в результате графики с базовыми функциями гистограммы plot(hist()) или ggplot показывают в основном нули, с числом отсчетов, соответствующим количеству строк. В реальных данных нет нулей, а столбец класса integer. Изменение класса на numeric, похоже, не имеет никакого эффекта.

Данные выглядят так:

> head(lengths)
            gene  size
1  0610005C13Rik  7381
3  0610009B22Rik  3249
4  0610009E02Rik 12071
7  0610009L18Rik  2512
8  0610010F05Rik 68682
11 0610010K14Rik  2710
> dim(lengths)
[1] 25230     2
> summary(lengths)
            gene            size          
 0610005C13Rik:    1   Min.   :       20  
 0610009B22Rik:    1   1st Qu.:     4082  
 0610009E02Rik:    1   Median :    13768  
 0610009L18Rik:    1   Mean   :   177473  
 0610010F05Rik:    1   3rd Qu.:    37702  
 0610010K14Rik:    1   Max.   :163098416  
 (Other)      :25224

Это очень простая таблица, состоящая из длины стенограммы каждого гена в геноме мыши, согласно таблице refFLat от UCS C. summary() четко указывает на то, что в столбце размера нет нулей. Однако plot(hist(lengths$size)) или ggplot(lengths) + geom_histogram(aes(size)) показывают подавляющее большинство значений в виде нулей - и кажется, что это число соответствует количеству записей в данных.

Ниже приведены выходные данные из базы и ggplot функции гистограммы со следующим кодом:

> plot(hist(lengths$size))
> plot(hist(subset(lengths, size>0)$size))
> ggplot(lengths, aes(size)) + geom_histogram() + ggtitle("Lengths")
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
> ggplot(subset(lengths, size>0), aes(size)) + geom_histogram() + ggtitle("Lengths, subset size>0")
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

enter image description here

базовый график, размер подмножества> 0 ggplot ggplot, размер подмножества> 0

Извините за ссылки, я впервые постер и у меня недостаточно репутации для добавления встроенных изображений.

Как видите, даже при построении подмножества данных нет нулей, но все равно выводится общее количество чисел в виде нулей! Я не понимаю, как решить это поведение, это совершенно дико для меня. Я уверен, что делаю простую ошибку, но я не могу понять это. Любая помощь будет принята с благодарностью.

Опять же, заранее спасибо за чью-либо помощь с моей головоломкой.

РЕДАКТИРОВАТЬ

Я идиот, и это просто не в масштабе , Спасибо @Axeman и @ user26050. Вот график в масштабе log10, используя следующий код:

> ggplot(lengths, aes(log10(size))) + geom_histogram() + ggtitle("Log10(size)")

log10 ggplot distribution

1 Ответ

2 голосов
/ 28 января 2020

Было бы здорово, если бы вы могли предоставить фрейм данных. Тогда люди могут проверить свои ответы и опубликовать свой код здесь. Но проблема довольно очевидна из того, что вы опубликовали.

Гистограмма показывает число наблюдений в некотором диапазоне по бинам. У вас 25230 наблюдений, и мы видим, что в самом первом бине насчитывается более 25000. Таким образом, другие ячейки содержат менее 230 наблюдений в сумме, и они очень малы - мы не видим их в этом масштабе.

Предложения для вас:
1. Используйте больше корзин. Ggplot пытался вам помочь: stat_bin() using bins = 30. Pick better value with binwidth. Вы можете добавить binwidth= или bins= внутри geom_histogram, чтобы выбрать параметр для лучшей визуализации. Например, попробуйте geom_histogram(bins=1000).
2. Используйте график плотности. Просто используйте geom_density() вместо geom_histogram().
3. Может быть, вы просто хотите какой-нибудь другой сюжет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...