2009-11-06 78 views
4

我想绘制一个jQuery手风琴内的图形,但它会导致图形斩波,并显示比例。任何人都得到了解决这个问题?jq绘制手风琴图

+0

码?你尝试了什么。什么失败了?如何/为什么? – jitter 2009-11-07 01:40:53

回答

6

由于jqPlot的Tab and Accordion UI Widgets页的说明,jqPlot需要知道当它绘制图表的大小,它可以这样做,如果该图由手风琴或标签隐藏。解决方法是以另一种方式指定图表的尺寸,或者在手风琴展开时调用replot。有关完整的详细信息和示例代码,请参阅Tab and Accordion UI Widgets

3

手风琴中的一切都隐藏起来,直到它被展开,这意味着它是无量纲的。您需要等到手风琴图表所在的DOM部分显示出来,然后绘制图表。如果你看一下列入jqPlot最新发布的ui.html例子,你会看到这一点:

这里,在一个名为chart1 DIV,这是一个隐藏的jQuery UI的选项卡中创建的情节:

plot1 = $.jqplot('chart1', [l1, l2, l3], { 
    title: "I was hidden", 
    lengend:{show:true}, 
    series:[{},{yaxis:'y2axis'}, {yaxis:'y3axis'}], 
    cursor:{show:true, zoom:true}, 
    axesDefaults:{useSeriesColor:true} 
}); 

然后事件处理程序注册了由jQUery UI Tab触发的'tabsshow'事件。就你而言,在完成改变手风琴的状态之后,你会想为jQuery UI Accordion小部件触发的'accordionchange'事件注册一个处理程序。这里是你如何绑定到该选项卡的“tabsshow”事件上面的代码示例:

$('#tabs').bind('tabsshow', function(event, ui) { 
    if (ui.index == 1 && plot1._drawCount == 0) { 
    plot1.replot(); 
    } 
    else if (ui.index == 2 && plot2._drawCount == 0) { 
    plot2.replot(); 
    } 
}); 

还有与手风琴一样ui.html文件的工作示例。你可以在这里的bitbucket的最新版本中找到这个例子:jqplot.1.0.0a_r701

另外,请确保你没有在同一个div上实例化多个jqPlot对象,或者你的图将坐在另一个之上,浏览器。

+0

出于某种原因,'ui.index ==#'不适合我。在jQuery网站上,他们使用'ui.index ===#'。再次,这对我没有用,所以我用'ui.newHeader.text()==“JQPlot”'(我使用jquery 1.9.1,jui 1.10.3和jqplot 1.0.8)希望这个信息可以帮助某人 – Chopo87 2013-07-12 12:13:33

1

隐藏元素,例如标签或手风琴元件没有大小,所以你可能想使用:jqplot的文档中提到的技术,即

  1. 提供在可替换的方式的曲线图的尺寸(例如。数据高度和数据宽度属性)AND
  2. 当图形显示时调用replot()。

然而,文档中的示例使用2.可以是不正确使用您的jQuery UI的版本事件名称。例如,如果使用Bootstrap 3,则适当的事件具有不同的名称:“shown.bs.tab”。

链接:

+0

只包含链接的答案是[认为不好的做法](http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers)。请总结这里的内容(不要复制/粘贴),这样答案就可以独立运作。如果你不这样做,那么你的答案就会被删除,特别是如果链接死亡的话。 – 2015-07-06 10:04:09