2016-10-24 20 views
2

Rの光沢のある出力に埋め込まれたインタラクティブな3Dプロットの場合、Rパッケージplotlyは、特に代替のshiny-rglパッケージのメンテナンスが最近消えているように、いくつかの良いオプションを提供します。Rプロット3dバープロット

ただし、plotlyを使用して3Dバープロットを作成することはできますか?

+1

は大丈夫ですが、私は非常にあなたがここで解決しているか、問題を理解していません。その答えは、「トリック」が何であるか、そしてそれがどのように機能するか、そして結果のイメージに何らかの説明を加えることによって改善することができます。 – Axeman

+0

ポイントを明確にするために変更されました。 Rで以下の応答コードを実行して、インタラクティブな3Dプロットを表示します。 – martin

答えて

2

3Dバープロットの外観を作成するトリックは、代わりにエラーバーをプロットすることです。

以下のコードで説明されているように、バーが必要な次元の値は、add_traceを介して供給される前に半分になり、視認性の低いものにリサイズされます(または透明にします)。半分の値の対称誤差バーは、単にバーにつながります。以下の例では、2グループのデータdf1df2が追加されています。あなた自身の質問に答える

library(shiny) 
library(plotly) 

ui <- fluidPage(
    plotlyOutput("plotlii", width = "100%", height = "700px") 
) 

server <- function(input, output) { 
    output$plotlii <- renderPlotly({ 
     # the data:  
     obs1 <- matrix(ncol=3, 
      c(1,2,3,1,2,2,6,6,4) 
     ) 
     df1 <- setNames(data.frame(obs1), c("a", "b", "c")) 
     df1$c<-(.5*df1$c) # half values to make them the centre point of the bars 
     obs2 <- matrix(ncol=3, 
      c(14,16,10,11,12,12,23,23,22) 
     ) 
     df2 <- setNames(data.frame(obs2), c("a", "b", "c")) 
     df2$c<-(.5*df2$c) # half values to make them the centre point of the bars 
     # the plot: 
     p <- plot_ly(type="scatter3d",mode="markers",showlegend=FALSE)%>% 
     add_trace(p, 
      x = ~a, y = ~b, z = ~c, 
      data = df1, 
      color=I("red"), 
      size = I(1), 
      name = "Group a", 
      error_z=list(
       color="red", 
       thickness=0, 
       symmetric = TRUE, 
       type = "data" , 
       array = df1$c 
      ) 
     )%>% 
     add_trace(p, 
      x = ~a, y = ~b, z = ~c, 
      data = df2, 
      color=I("gray"), 
      size = I(1), 
      name = "Group a", 
      error_z=list(
       color="gray", 
       symmetric = TRUE, 
       type = "data" , 
       array = df2$c 
      ) 
     ) 
    }) 
} 

shinyApp(ui, server) 

enter image description here

+0

編集は実際に評判を高めますか? – martin