2017-12-16 19 views
8

私は、PlotlyでPlotlyを3D線のプロットにプロットして、すべての線の下に塗りつぶしたいと思います。ここにサンプルコードがあります。私はPlotly 3Dの線の下に塗りつぶし

enter image description here

を充填することなく、このプロットを

3Dラインプロットを生成することができ、このコードで

library(plotly) 

dens <- with(diamonds, tapply(price, INDEX = cut, density)) 
data <- data.frame(
    x = unlist(lapply(dens, "[[", "x")), 
    y = unlist(lapply(dens, "[[", "y")), 
    cut = rep(names(dens), each = length(dens[[1]]$x))) 

p <- plot_ly(data, x = ~cut, y = ~x, z = ~y, type = 'scatter3d', mode = 'lines', color = ~cut) 
p 

Iはすでにsurfaceaxis=0、1、または2を試みていると、彼らは間違った詰め物を生成しました。私が欲しいもの

enter image description here

を充填

3D-Plotly間違ったとは、x軸とラインプロットの間の領域を埋めることです。

別の値を使用した3Dプロットがあります。別の値

enter image description here

ため曲線下充填と例の3D-プロットとして

は、誰かが方法を提案してくださいことはできますか?前もって感謝します。

編集:それは「plotly」

答えて

2

アップデートパッケージを使用して作成する必要があります。

これはあなたのために働くべきです。答えの

rle_x <- rle(as.numeric(factor(data$cut)))$lengths 

mcolor <- c("red","blue","green","purple", "yellow")  

data$mcolor<-rep(mcolor[seq_along(rle_x)],times = rle_x) 

cloud(y~x+cut, data, panel.3d.cloud=panel.3dbars, 
     xbase=0.4, ybase=0.4, scales=list(arrows=FALSE, col=1), 
     par.settings = list(axis.line = list(col = "transparent")), 
     col.facet = data$mcolor, 
     col = data$mcolor) 

enter image description here

初版:

あなたはlatticeExtra::cloudを使用して試すことができます。確かに、それはplotlyのようなインタラクティブプロットを与えません。

cloud(y~x+cut, data, panel.3d.cloud=panel.3dbars, 
     xbase=0.4, ybase=0.4, scales=list(arrows=FALSE, col=1), 
     par.settings = list(axis.line = list(col = "transparent"))) 

enter image description here

2

あなたは疑似3Dで[OK]をしている場合は、稜線密度プロットを行うことができます。私は、利用可能なプロットバージョンもあると信じています。

免責事項:私はggridgesパッケージの著者です。

library(ggplot2) 
library(ggridges) 

ggplot(diamonds, aes(x = price, y = cut, fill = cut)) + 
    geom_density_ridges(scale = 2, alpha = 0.7) + 
    scale_fill_brewer(guide = guide_legend(reverse = TRUE)) + 
    scale_y_discrete(expand = c(0.01, 0)) + 
    theme_ridges(center = TRUE) 

enter image description here

関連する問題