Трехмерный график плотности (из трехмерного графика рассеяния) - PullRequest
0 голосов
/ 18 июня 2020

Я хочу создать трехмерный график плотности с непрозрачностью, отображающей плотность в пределах области (например, области с высокой плотностью отображаются темно-красным цветом, а прозрачные светло-красные с низкой плотностью). Нечто похожее на 2D-графики на этой странице; https://www.r-graph-gallery.com/2d-density-chart.html

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

Я пересек это на языке Wolfram; https://reference.wolfram.com/language/ref/DensityPlot3D.html, но я надеюсь использовать R.

В качестве примера для работы см. Ниже сделанный с помощью plotly

set.seed(123)
gene_x <- rnorm(500, mean=280, sd=100)
gene_y <- rnorm(500, mean = 450, sd=150)
gene_z <- rnorm(500, mean = 340, sd=80)
celltype1 <- data.frame(gene_x,gene_y,gene_z)
celltype1['celltype'] = "neuron"
gene_x <- rnorm(400, mean= 60, sd=150)
gene_y <- rnorm(400, mean = 40, sd=100)
gene_z <- rnorm(400, mean = 110, sd=50)
celltype2 <- data.frame(gene_x,gene_y,gene_z)
celltype2['celltype'] = "astrocyte"
df <- rbind(celltype1,celltype2)

library("plotly")
plot_ly(x=df$gene_x, y=df$gene_y, z=df$gene_z, type="scatter3d", mode="markers", color = df$celltype, marker = list(size = 4))

1 Ответ

0 голосов
/ 19 июня 2020

Вы можете использовать пакет rgl, чтобы получить 3D-график. В вашем фрейме данных df следующий код:

library(rgl)
mycolor <- c("red", "blue")
open3d()
plot3d(x=df$gene_x, y=df$gene_y, z=df$gene_z, size=4, col=mycolor )

дает следующий результат:

output

Пожалуйста, проверьте rgl пакет для дальнейшего расширения в соответствии с вашими потребностями.

...