【问题标题】:How to remove trace from the plot如何从图中删除痕迹
【发布时间】:2021-01-04 16:10:40
【问题描述】:

我想从图中和下面的图例中删除 NA 跟踪。

  plot_ly(data = bData,  x = ~`Maturity Date`, y =  ~YVal,  type = 'scatter', mode='markers',  
              symbol = ~Sym,  symbols = c('circle-open','x-open','diamond-open') ,
              text = ~paste(" Security: ", bData$Security, "<br>",
                            "Currency: ", bData$Crncy, "<br>",
                            "YTM: ", bData$YTM,"<br>",
                            "DM: ", bData$DM) ,
              hoverinfo = 'text',legendgroup = 'group1'
      ) %>%
        add_trace(x = ~`Maturity Date`, y =  ~YVal , symbol=~Crncy,legendgroup = 'group2')

【问题讨论】:

    标签: r shiny plotly scatter-plot


    【解决方案1】:

    试试这个。您可以在新数据框中隔离没有任何值的数据,然后将其绘制出来。在此示例中,我将省略 Sym 变量中的 None 值,但如果您有 NA,请使用 !is.na(),因为我还为您添加了一行新代码。代码如下:

    library(plotly)
    #New data example
    bData2 <- bData[bData$Sym!='None',]
    #For your real data
    bData2 <- bData[!is.na(bData$Sym),]
    #Code
    plot_ly(data = bData2,  x = ~`Maturity Date`, y =  ~YVal,  type = 'scatter', mode='markers',  
            symbol = ~Sym,  symbols = c('circle-open','x-open','diamond-open') ,
            text = ~paste(" Security: ", bData2$Security, "<br>",
                          "Currency: ", bData2$Crncy, "<br>",
                          "YTM: ", bData2$YTM,"<br>",
                          "DM: ", bData2$DM) ,
            hoverinfo = 'text',legendgroup = 'group1'
    ) %>%
      add_trace(x = ~`Maturity Date`, y =  ~YVal , symbol=~Crncy,legendgroup = 'group2')
    

    输出省略None:

    更新:试试这个技巧,将属于None 类的值替换为NA,首先将因子转换为字符,然后再返回因子。真正的NA 将被plotly 函数删除。代码如下:

    #Replace
    bData$Sym <- as.character(bData$Sym)
    bData$Sym[bData$Sym=='None']<-NA
    bData$Sym <- as.factor(bData$Sym)
    #Code
    plot_ly(data = bData,  x = ~`Maturity Date`, y =  ~YVal,  type = 'scatter', mode='markers',  
            symbol = ~Sym,  symbols = c('circle-open','x-open','diamond-open') ,
            text = ~paste(" Security: ", bData$Security, "<br>",
                          "Currency: ", bData$Crncy, "<br>",
                          "YTM: ", bData$YTM,"<br>",
                          "DM: ", bData$DM) ,
            hoverinfo = 'text',legendgroup = 'group1'
    ) %>%
      add_trace(x = ~`Maturity Date`, y =  ~YVal , symbol=~Crncy,legendgroup = 'group2')
    

    输出:

    或者也试试这个,复制YVal并为第一个变量设置NA

    #Replace 2
    bData$YVal2 <- bData$YVal
    bData$Sym <- as.character(bData$Sym)
    bData$Sym[bData$Sym=='None']<-NA
    bData$YVal[is.na(bData$Sym)]<-NA
    bData$Sym <- as.factor(bData$Sym)
    #Code
    plot_ly(data = bData,  x = ~`Maturity Date`, y =  ~YVal,  type = 'scatter', mode='markers',  
            symbol = ~Sym,  symbols = c('circle-open','x-open','diamond-open') ,
            text = ~paste(" Security: ", bData$Security, "<br>",
                          "Currency: ", bData$Crncy, "<br>",
                          "YTM: ", bData$YTM,"<br>",
                          "DM: ", bData$DM) ,
            hoverinfo = 'text',legendgroup = 'group1'
    ) %>%
      add_trace(x = ~`Maturity Date`, y =  ~YVal2 , symbol=~Crncy,legendgroup = 'group2')
    

    输出:

    【讨论】:

    • 实际上,对于第二次跟踪,数据源应该是 bData 而不是 bData2,因为 bData2 是 bData 的子集,它会错过一些在 bData$Sym == NA 中具有 NA 的货币
    • @AriKari 这是一个有效的观察结果,您可以尝试使用它或尝试na.omit()complete.cases()。您没有提供新数据,因此我无法正确重现该问题。如果你愿意,你可以分享你在新情节中使用的新数据!
    • @AriKari 如果您分享新数据,请告诉我!
    • 新数据与我在之前的问题中分享的数据相同,除了它是 NA 而不是 None
    • @AriKari 我添加了一个更新,您能否检查一下是否适合您?
    猜你喜欢
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    • 2019-02-10
    • 2014-02-08
    相关资源
    最近更新 更多