amchart指标加载不停止,甚至出现图表

时间:2018-11-30 14:42:46

标签: amcharts

我尝试在我的系统中使用Amchart插件。当我为图表运行基本代码时,图表成功出现。然后,我尝试使用自定义加载指标。但是问题在于即使图表出现,加载指示器也不会停止。

下面是JS脚本

CodonPosition_separation = function(grTargetGene) {
    grTargetGene = sort(grTargetGene)
    grTargetGene$prev_exons_length = c(0,width(grTargetGene)[1:length(grTargetGene)-1])
    if (length(grTargetGene) >1) {
        for (l in 2:length(grTargetGene)) {
          grTargetGene$prev_exons_length[l] = grTargetGene$prev_exons_length[l]+grTargetGene$prev_exons_length[l-1]
        }
      }
  grTargetGene$coding_pos =  grTargetGene$prev_exons_length%%3+1
  grTargetGene_N =  GRanges()
  grTargetGene_S =  GRanges()
  for (l in 1:length(grTargetGene)) {
    for (obj in c("start_nonsyn","start_syn", "end_nonsyn", "end_syn","gr_nonsyn","gr_syn")) {if(exists(obj)) {rm(obj)}}
    if (as.character(strand(grTargetGene)[1]) =="+"){
      start_ns = start(grTargetGene[l])+1-grTargetGene$coding_pos[l]
      end_ns = end(grTargetGene[l])
      if (start_ns <=end_ns) {
        start_nonsyn = seq(from = start(grTargetGene[l])+1-grTargetGene$coding_pos[l],to = end(grTargetGene[l]), by=3)
        end_nonsyn = seq(from = start(grTargetGene[l])+2-grTargetGene$coding_pos[l],to = end(grTargetGene[l]), by=3)
      }
      start_s =start(grTargetGene[l])+3-grTargetGene$coding_pos[l]
      end_s = end(grTargetGene[l])
      if (start_s <=end_s) {
        start_syn = seq(from = start(grTargetGene[l])+3-grTargetGene$coding_pos[l],to = end(grTargetGene[l]), by=3)
        end_syn = start_syn
      }

    } else {
      start_ns = end(grTargetGene[l])-1+grTargetGene$coding_pos[l]
      end_ns = start(grTargetGene[l])
      if (start_ns >=end_ns) {
        start_nonsyn = seq(from = end(grTargetGene[l])-1+grTargetGene$coding_pos[l],to = start(grTargetGene[l]), by=-3)
        end_nonsyn = seq(from = end(grTargetGene[l])-2+grTargetGene$coding_pos[l],to = start(grTargetGene[l]), by=-3)
      }
      start_s =end(grTargetGene[l])-3+grTargetGene$coding_pos[l]
      end_s = start(grTargetGene[l])
      if (start_ns >=end_ns) {
        start_syn = seq(from = end(grTargetGene[l])-3+grTargetGene$coding_pos[l],to = start(grTargetGene[l]), by=-3)
        end_syn = start_syn
      }
    }
    if (exists("start_nonsyn")) {
      length_nonsyn = length(start_nonsyn)+ length(end_nonsyn)
      gr_nonsyn = GRanges(
        seqnames = rep(seqnames(grTargetGene[l]), length_nonsyn),
        strand = rep(strand(grTargetGene[l]), length_nonsyn),
        ranges = IRanges(start = c(start_nonsyn, end_nonsyn), end = c(start_nonsyn, end_nonsyn))
      )
      gr_nonsyn = intersect(gr_nonsyn,grTargetGene[l])
      grTargetGene_N = append(grTargetGene_N, gr_nonsyn)
      } 
    if (exists("start_syn")) {
      length_syn = length(start_syn)
      gr_syn = GRanges(
        seqnames = rep(seqnames(grTargetGene[l]), length_syn),
        strand = rep(strand(grTargetGene[l]), length_syn),
        ranges = IRanges(start = start_syn, end = end_syn)
      )
      gr_syn = intersect(gr_syn,grTargetGene[l])
      grTargetGene_S = append(grTargetGene_S, gr_syn)
    }
  }
  return(list("grTargetGene_S"=grTargetGene_S,"grTargetGene_N"=grTargetGene_N))
}

下面是html代码

> CodonPosition_separation(grTargetGene)
$grTargetGene_S
GRanges object with 514 ranges and 0 metadata columns:
        seqnames                 ranges strand
           <Rle>              <IRanges>  <Rle>
    [1]     chr2 [148602724, 148602724]      +
    [2]     chr2 [148602727, 148602727]      +
    [3]     chr2 [148602730, 148602730]      +
    [4]     chr2 [148602733, 148602733]      +
    [5]     chr2 [148602736, 148602736]      +
    ...      ...                    ...    ...
  [510]     chr2 [148684831, 148684831]      +
  [511]     chr2 [148684834, 148684834]      +
  [512]     chr2 [148684837, 148684837]      +
  [513]     chr2 [148684840, 148684840]      +
  [514]     chr2 [148684843, 148684843]      +
  -------
  seqinfo: 1 sequence from an unspecified genome; no seqlengths

$grTargetGene_N
GRanges object with 517 ranges and 0 metadata columns:
        seqnames                 ranges strand
           <Rle>              <IRanges>  <Rle>
    [1]     chr2 [148602722, 148602723]      +
    [2]     chr2 [148602725, 148602726]      +
    [3]     chr2 [148602728, 148602729]      +
    [4]     chr2 [148602731, 148602732]      +
    [5]     chr2 [148602734, 148602735]      +
    ...      ...                    ...    ...
  [513]     chr2 [148684829, 148684830]      +
  [514]     chr2 [148684832, 148684833]      +
  [515]     chr2 [148684835, 148684836]      +
  [516]     chr2 [148684838, 148684839]      +
  [517]     chr2 [148684841, 148684842]      +
  -------
  seqinfo: 1 sequence from an unspecified genome; no seqlengths
我已经尝试了几种方法,但是对我来说并不幸运。任何建议

1 个答案:

答案 0 :(得分:2)

amchart4文档(https://www.amcharts.com/docs/v4/tutorials/custom-loading-indicator/)上,它仅显示了如何创建自定义加载指示器。图表渲染完成后,它不会挂起hideIndicator()事件。

有一个Ready事件,您可以立即使用(https://github.com/amcharts/amcharts4/issues/436#issuecomment-441370242)。您只需将hideIndicator()函数连接到Ready事件:

...

chart.events.on("ready", function(ev){
    hideIndicator();
});

...

小提琴: https://jsfiddle.net/davidliang2008/akpe5f4b/1/