Сделать 3D-график из матрицы
У меня есть 2D matrix
:
cells Rpl37a Itm2c Atp1b1 Olfm1 Prnp
1: AAACGGGCAATCTACG-1 1.7876878 2.393453 4.527764 2.0751658 2.3934526
2: AAGTCTGCAGCGAACA-1 1.9235754 1.683439 4.034793 1.6834394 1.9235754
3: ACAGCCGAGTACGTTC-1 1.7168081 2.422601 4.021788 2.0605259 2.0605259
4: ACATCAGCAGGTTTCA-1 3.1849476 2.165849 4.139574 0.0000000 1.8161277
5: ACCCACTAGTGTACCT-1 0.8960067 2.018112 4.774355 2.0181116 1.3608743
6: ACCTTTAAGTGGTCCC-1 3.2418217 1.199632 3.185896 1.7294919 0.8718525
7: ACGATACCAAGAAGAG-1 1.2513362 2.396079 3.977721 1.2513362 2.9158808
8: ACGGGCTGTACAGTGG-1 3.5215001 1.710004 2.824437 2.0532873 2.5993292
Для каждого столбца мне нужно составить график плотности, который показывает распределение значений строк, а затем показать все графики плотности на одном 3D
диаграмма. Как я мог этого добиться? Я знаю, что есть plotly
библиотека, но я совершенно новый и у меня проблемы с этим.
Обновить
Моя цель - как-то увидеть все дистрибутивы одновременно. Я не знаю, как этого добиться. Просто 2D
Наложенные линейные диаграммы не будут работать, потому что приведенная выше матрица, которую я только что показал в качестве примера, на самом деле содержит гораздо больше строк и столбцов. Мне могут понадобиться не только графики плотности, но и просто линейный график для каждого столбца.
1 ответ
Может быть, так, но я не уверен.
dat <- as.data.frame(matrix(rnorm(5000*10), ncol=10))
names(dat) <- LETTERS[1:10]
xvalues <- apply(dat, 2, function(y) density(y)$x)
xmin <- min(xvalues)
xmax <- max(xvalues)
yvalues <- c(apply(dat, 1, function(a) density(a, from=xmin, to=xmax)$y))
dd <- cbind(c(yvalues), xvalues=c(xvalues), a = colnames(dat))
library(plotly)
plot_ly(data.frame(dd), x = ~xvalues, y = ~a, z = ~yvalues, split = ~a,
type = "scatter3d", mode = "lines")
РЕДАКТИРОВАТЬ
Лучше, но все же не убедительно.
dat <- as.data.frame(matrix(rnorm(150*10), ncol=10))
names(dat) <- LETTERS[1:10]
xvalues <- apply(dat, 2, function(y) density(y)$x)
xmin <- min(xvalues)
xmax <- max(xvalues)
yvalues <- c(apply(dat, 2, function(a) density(a, from=xmin, to=xmax)$y))
dd <- cbind(c(yvalues), xvalues=c(xvalues), a = colnames(dat))
library(plotly)
plot_ly(data.frame(dd), x = ~xvalues, y = ~a, z = ~yvalues, split = ~a,
type = "scatter3d", mode = "lines")