тепловая карта не представляет данные точно - PullRequest
0 голосов
/ 14 ноября 2018

Ниже приведен пример моего набора данных, который состоит из 14 столбцов и около 6500 строк, заполненных 1 и 0.Загрузите весь мой набор данных здесь .

Row C1  C2  C3  C4  C5  C6  C7  C8  C9  C10 C11 C12 C13 C14
2   1   1   1   1   1   1   1   1   1   1   1   0   1   1
3   1   1   1   1   1   1   1   1   1   1   1   0   1   1
4   1   1   1   1   1   1   1   1   1   1   1   0   1   1
5   1   1   1   0   0   0   1   1   1   1   1   0   1   1
6   1   1   1   1   1   1   1   1   1   1   1   0   1   0
7   1   1   1   1   1   1   1   1   1   1   1   0   1   1
8   1   1   1   1   1   1   0   1   1   1   1   0   1   1
9   1   1   1   1   1   1   1   1   1   1   1   0   1   1

Столбец 8 содержит 13 нулей, но они не представлены в тепловой карте.

Row    C1   C2  C3  C4  C5  C6  C7  C8  C9  C10 C11 C12 C13 C14
5011    1   1   1   0   0   0   1   0   0   1   1   0   1   1
5801    1   1   1   1   1   1   1   0   0   1   0   0   1   0
5803    1   1   1   1   1   1   0   0   0   1   0   0   1   0
5809    1   1   1   1   1   1   0   0   0   1   0   0   1   0
5812    1   1   1   1   1   1   1   0   0   1   0   0   1   0
5813    1   1   1   1   1   1   0   0   0   1   0   0   1   0
5815    1   1   1   1   1   1   1   0   0   1   0   0   1   0
5817    1   1   1   1   1   1   1   0   0   1   0   0   1   0
5818    1   1   1   1   1   1   1   0   0   1   0   0   1   0
5823    1   1   1   1   1   1   1   0   0   1   0   0   1   0
5826    1   1   1   1   1   1   1   0   0   1   0   0   1   0
6435    1   1   1   0   0   0   0   0   0   1   1   0   1   1
6436    1   1   1   0   0   0   0   0   0   1   1   0   1   1

Как мне отредактировать мой код, чтобы эти 13 нулей были представлены в тепловой карте в виде белой линии, как и другие столбцы?

код тепловой карты

library(RColorBrewer)
library(openxlsx)


# Read in dataset
df <- read.xlsx("data set.xlsx", sheet = 1)

# Set as integer matrix
m <- as.matrix(df[, -1])

#Create colors
greyblack <- c("grey", "black")
pal <- colorRampPalette(greyblack)(100)

# Create heatmap
heatmap(m, Rowv = NA, Colv = NA, scale="none", col = pal, ylab="Records", main="Data Completeness")

enter image description here

1 Ответ

0 голосов
/ 15 ноября 2018

Кажется, это проблема разрешения.Каждая из этих пропущенных строк в столбце 8 имеет ширину в один пиксель.Столбец 1 также содержит нули, которые не отображаются (строки 2811 и 3639), а другие столбцы содержат множество пропущенных данных из одной строки (в пикселях), которые не отображаются.Когда я сокращаю набор данных до небольшой области вокруг одного из нулей в C8, они появляются:

smalldf <- df[5009:5013,]
smallm <- as.matrix(smalldf[,-1])
heatmap(smallm, Rowv = NA, Colv = NA, scale="none", col = pal, ylab="Records", main="Data Completeness")

Изображение: когда df сокращается до области вокруг одного из нулей в столбце8, отображается белая линия.

Если вы действительно хотите показать эти отсутствующие на 1 строке данные в тепловой карте, я бы предложил заменить соседние 1 на нули.(т. е. 1 ноль становится 1 ноль выше него и 1 ноль ниже него).Быстрый и грязный способ сделать это для одного столбца:

> idx <- which(df$Column.8 == 0)
> df$Column.8[idx-2] <- 0
> df$Column.8[idx-1] <- 0
> df$Column.8[idx+1] <- 0
> df$Column.8[idx+2] <- 0

> m <- as.matrix(df[, -1])
> heatmap(m, Rowv = NA, Colv = NA, scale="none", col = pal, ylab="Records", main="Data Completeness")

Это приводит к тому, что линии отображаются как минимум, хотя кажется, что имеется только 2-3 дискретных отверстия, а не 8 отдельных крошечныхотверстия:

Тепловая карта со столбцом «пересэмплирования» 8

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

...