Closed BhaktiDwivedi closed 3 years ago
Hi!
Is there any demo of what the above code does? I'm not sure if I get the "interactive" thing right.
You can certainly put scattermore into interactive tools (eg. with shiny) and generate plots from new data (I did that in several projects already); brushing works as with normal plots. OTOH I'm not sure scattermore will be able to display various animated contents and tooltips -- it's just a rasterizer. I've got some code for displaying the cells quickly in WebGL that might be developed to support this feature (actually a predecessor of scattermore.. :D ); if you're interested I can try to find it.
Thank you for your prompt response!
Here is the link... https://bbisr.shinyapps.winship.emory.edu/ClusterViewer/. This is what I am trying to achieve.
To reduce the time it takes to build and print plotly, I am displaying (pre-generated) saved html images htmlwidgets::saveWidget(as_widget(p), file=paste0("www/", sample_collection[i], "_", study_subjects[j], ".html"))
for any combination of datasets. Loading html images help but still not as fast as I would have hoped.
However, for the "gene look up" option I have to build and generate the plotly scatterplot given the user-input (e.g., TP53). It is slow... and the chunk of the time goes into printing/loading the R plotly. What other alternatives I can try to speed up this R plotly code? Appreciate any suggestions. Thank you.
How many cells (roughly) do you want to have there? That's probably a central question for performance here.
Anyway, scattermore won't help much here -- it can generate the raster to display, but there is no way to easily represent the cell origin information so that it's interpretable by the browsers to "know" where the mouse pointer is actually pointing. I recommend you try some libraries like d3.js
or paper.js
, or perhaps WebGL.
I have about ~200,000 cells for the largest data set. I will check these libraries. Thank you for your help!
that should be doable with some basic WebGL even interactively.
I've once implemented one similar thing (a faster remake of sleepwalk), here: http://e-x-a.org/stuff/sleepwalk.html (hover the cells and use the mousewheel) Feel free to download the code and extract the rendering javascript, or build on it, it's in public domain now.
Thank you so much for sharing! Appreciate it.
We're likely not going to have interactive scattermore, hope the links above helped a bit. Closing this for now :]
It was helpful and motivating. Thank you! I just have to learn javascript/ds.js to improve my code and visualization :)
Great! Feel free to reopen/share if you find some easy way to make it work
Thank you for developing the scattermore. I find it very useful. Is it possible to generate an interactive scattermore plot? (something in lines to plotly). My data consists of ~ million data points and plotly function takes a while to plot. I would really like to speed up the plotting function especially the time it takes the plotly to load/print the plot.
For example, I have the below plotly function written in R:
` bins <- length(unique(df[["exp"]])) exp_col <- colorRampPalette(c('khaki','darkred'))(bins)
p <- plot_ly(df, x = ~x, y = ~y, color = ~exp, colors = exp_col, marker = list( symbol = "circle", size = 6, opacity = 0.40, mode = "markers", line = list(color = ~exp, colors = exp_col, width=0.5) ), width = 1300, height = 900, type = "scattergl", mode = "markers", hoverinfo = "text", text = ~updated_info, hoverlabel = list(font=list(size=15))) %>% layout( xaxis=list(title="UMAP_1", zeroline=F), yaxis=list(title="UMAP_2", zeroline=F), showlegend = TRUE, legend = list(font = list(size = 14)))
system.time(print(p)) user system elapsed 3.402 0.350 3.754 `
Appreciate any help and suggestions. Thank you.