Quantcast
Channel: Active questions tagged r - Stack Overflow
Viewing all articles
Browse latest Browse all 206305

Error "not numeric" when using crosstalk package with EnhancedVolcano

$
0
0

I'd like to implement a cross-talk functionality between a table and plot in both directions: 1) select the row in the table which will be reflected in the plot, 2) select a dot in the plot which will be reflected in the table. Same idea as at https://rstudio-pubs-static.s3.amazonaws.com/215948_95c1ab86ad334d2f82856d9e5ebc16af.html

I've managed to implement a script, which works beautifully if I make scatter plot with ggplot() and table (both objects cross-talk!). However, when used EnhancedVolcano() and table I got the following error:

Error in EnhancedVolcano(toptable = data_shared, lab = "disp", x = "qsec",  : 
  qsec is not numeric! 

If I replace data_shared variable with df_orig, no error is raised, but there is no cross-talking between objects :(

Does this mean that SharedData$new() doesn't recognize numeric values as numeric? How to fix this error?

Any help is highly appreciated. Thank you

Toy example:

  library(plotly)            # '4.9.1'
  library(DT)                # '0.11'
  library(crosstalk)         # ‘1.0.0’
  library(EnhancedVolcano)   # ‘1.4.0’
  # Input
  data1 = mtcars  #dim(data1)  # 32  11
  data_shared = SharedData$new(data1) #, key = c("qsec", "hp"))
  # df_orig = data_shared$origData()
  # V-Plot
  vp =EnhancedVolcano( toptable = data_shared,
                       lab  = 'disp',
                       x  =  'qsec',
                       y  =  'hp',
                       xlab  ='testX',
                       ylab = 'testY') 
  bscols(
    ggplotly(vp + aes(x= qsec, y= -log10(hp/1000))),
    datatable(data_shared, style="bootstrap", class="compact", width="100%",
              options=list(deferRender=FALSE, dom='t')))

Same script, which works with ggplot():

data1 = mtcars  #dim(data1)  # 32  11
data_shared = SharedData$new(data1) 
vp = ggplot(data = data_shared, mapping = aes(qsec, hp)) +
  geom_point()
bscols(
  ggplotly(vp) ,
  datatable(data_shared, style="bootstrap", class="compact", width="100%",
            options=list(deferRender=FALSE, dom='t')))

Viewing all articles
Browse latest Browse all 206305

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>