在 Plotly 中为 3D 散点图添加注释注释、中为、Plotly、散点图

由网友(取向阻击)分享简介:我是这个领域的新手,希望能得到一些帮助.我刚刚开始使用 Plotly 并正在使用它来构建一个非常基本的 3D 散点图,它可以模拟一些货架以及哪些物品在哪里.当我构建架子"并渲染情节时,我想在文本中添加一个注释,指示我正在查看哪一组架子.I'm new to this arena and was hoping to ge...

我是这个领域的新手,希望能得到一些帮助.我刚刚开始使用 Plotly 并正在使用它来构建一个非常基本的 3D 散点图,它可以模拟一些货架以及哪些物品在哪里.当我构建架子"并渲染情节时,我想在文本中添加一个注释,指示我正在查看哪一组架子.

I'm new to this arena and was hoping to get some help. I'm just starting to work with Plotly and am using it to build a very basic 3D Scatterplot that models some shelves and what items are where. While I built the "shelf" and the plot renders, I would like to add an Annotation to the text indicating which set of shelves I'm looking at. Here is the current output of my program and this is what I am trying to do

10大Plotly数据可视化美图及工具介绍

I've tried reviewing the documentation and attempted to add an annotation (as I have for 2D Analogs) and while the code compiles, the text does not show up.

p <- plot_ly(all, x = X, y = Y, z = Z,  
    text = paste0("Candy: ", SKU,"; QTY: ", Qty), 
    color = OccupiedPct, 
    colors = cols,
    hoverinfo = "text",
    type = "scatter3d", mode = "markers") %>%
layout(
   title = "Shelves"
)
sub <- list(
    x = 3,
    y = 2,
    z = 0,
    text = "Shelf1",
    xref = "x",
    yref = "y",
    zref = "z",
    showarrow = FALSE
)
p %>%
   layout(annotations = sub)

Thank you in advance! Mike

#

UPDATE Thank you @MLavoie for your answer and sorry for excluding a reproducible dataset. Unfortunately I could not replicate what you had done. I noticed that the z-axis on your plot was set to zero and I tried to reset mine without success. However, even adjusting the point to be in the plot range, I still couldn't get it to show up. Here is the plot I got: when I ran this code

set.seed(100)
d <- diamonds[sample(nrow(diamonds), 1000), ]

p <- plot_ly(d, x = carat, y = price, z=depth, text = paste("Clarity: ",     clarity),
         type="scatter3d", mode="markers")

p %>% 
  add_trace(x = 2.5, y = 5000, z = 56, type = "scatter3d", text = "test", mode = "text") %>% 
  add_trace(x = 2.5, y = 15000, z = 56, type = "scatter3d", text = "test", mode = "text") %>% 
  layout(
    xaxis = list(range = c(0, 5)),
    yaxis = list(range(0,20000)),
    zaxis = list(range(0,100)),
    showlegend = FALSE)

In the interest of completeness, here is my Session Info:

R version 3.2.1 (2015-06-18)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 8 x64 (build 9200)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] plotly_2.0.16 ggplot2_2.0.0

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.3      digest_0.6.9     grid_3.2.1       plyr_1.8.3       R6_2.1.2         jsonlite_0.9.19  gtable_0.1.2     magrittr_1.5     scales_0.3.0     httr_1.1.0      
[11] viridis_0.3.2    tools_3.2.1      htmlwidgets_0.5  munsell_0.4.2    yaml_2.1.13      base64enc_0.1-3  colorspace_1.2-6 htmltools_0.3    gridExtra_2.0.0 

Thanks again!

解决方案

Using the iris dataset (you did not provide a reproducible example) you could try:

set.seed(100)
d <- diamonds[sample(nrow(diamonds), 1000), ]

p <- plot_ly(d, x = carat, y = price, z=depth, text = paste("Clarity: ", clarity),
        type="scatter3d", mode="markers")

p %>% 
add_trace(x = 2.5, y = 5000, z = 0, type = "scatter3d", text = "test", mode = "text") %>% 
add_trace(x = 2.5, y = 15000, z = 0, type = "scatter3d", text = "test", mode = "text") %>% 
layout(showlegend = FALSE)

阅读全文

相关推荐

最新文章