jqPlot饼图渲染但抛出错误并表现得很奇怪?

时间:2012-05-23 09:44:38

标签: javascript jquery charts jqplot

我使用jqPlot创建了一个饼图,饼图确实渲染了,我的代码在下面提到

var plot4 = $.jqplot('pie', [[["none",10],["error",20],["click",30],["impression",40]]], {
        seriesDefaults:{
            renderer:$.jqplot.PieRenderer,
            rendererOptions:{ sliceMargin: 0 }
        },
        legend:{ show: true }     
    });

我面临的问题是,当我将鼠标悬停在饼图上时,我会收到一条错误说明

B.axes[D[0]]._ticks[0] is undefined

在firebug控制台上。当我点击饼图的任何切片时,我看到一个更奇怪的事件,我点击的整个切片消失了。

在点击之前,饼图如下所示: -

Original Pie Chart

在我点击棕色区域之后,馅饼变成了如下所示的东西,甚至棕色切片也消失了。

Pie Chart without the brown slice

请为上述提供解决方案。我尝试了不同的配置,但是din工作。还让我告诉你我正在使用其他插件,如本页上的条形图和光标。

我在下面提到了我的网页的完整源代码: -

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>jqPlot Demo</title>
<!--[if IE]><script src="./js/excanvas.min.js"></script><![endif]-->
<script type="text/javascript" src="./js/jquery.min.js"></script>
<script type="text/javascript" src="./js/jquery.jqplot.js"></script>
<script type="text/javascript" src="./js/jqplot.cursor.min.js"></script>
<script type="text/javascript" src="./js/jqplot.dragable.min.js"></script>
<script type="text/javascript" src="./js/jqplot.trendline.min.js"></script>
<script type="text/javascript" src="./js/jqplot.barRenderer.min.js"></script>
<script type="text/javascript" src="./js/jqplot.pieRenderer.min.js"></script>
<script type="text/javascript" src="./js/jqplot.canvasAxisLabelRenderer.min.js"></script>
<script type="text/javascript" src="./js/jquery-ui.min.js"></script>
<link rel="stylesheet" href="./css/jquery.jqplot.min.css"/>
<link rel="stylesheet" href="./css/jqPlot.css"/>
<script>
$(document).ready(function(){
    $.jqplot.config.enablePlugins = true;
    var lineGraph=$.jqplot('chart',  [[[10, 2],[30,5.12],[50,13.1],[70,33.6],[90,85.9],[11,20.9]]],
            {
            title:'Exponential Line',
            axes:{yaxis:{min:0,max:100},xaxis:{min:0,max:100}},
            legend:{
                show:true,
                location:'se',
                xoffset:12,
                yoffset:0
                },
            grid:{
                    gridLineColor:'#F2F2F2',
                    background:'#FFFFFF',
                    borderWidth:1,
                    borderColor:'#BBBBBB',
                    shadow:true,
                    shadowAmgle:45,
                    shadowWidth:2,
                    shadowOffset:2,
                    shadowDepth:2
                    },
           cursor:{
                     style: 'pointer',
                     show:false,
                     showTooltip: true,
                     followMouse:true,
                     tooltipOffset:10,
                     tooltipLocation:'se'
                  },
           highlighter: {
                        lineWidthAdjust: 2.5,
                        sizeAdjust: 5,          
                        showTooltip: true,     
                        tooltipLocation: 'nw', 
                        fadeTooltip: true,     
                        tooltipFadeSpeed: "fast",
                        tooltipOffset: 2,       
                        tooltipAxes: 'both',   
                        tooltipSeparator: ', ',
                        useAxesFormatters: true,
                        tooltipFormatString: '%.5P'
                    },
           seriesDefaults:{
                       trendline:{
                                show:true,
                                color:'#A2D379',
                                lable:'trendX',
                                lineWidth:2,
                                shadow:true
                                    },
                       color:'#058DC7',
                       lineWidth:5,
                       fill:true,
                       fillAndStroke:true,
                       fillColor:'#E6F4F9'
                       }

            });
    var plot4 = $.jqplot('pie', [[["none",10],["error",20],["click",30],["impression",40]]], {
        seriesDefaults:{
            renderer:$.jqplot.PieRenderer,
            rendererOptions:{ sliceMargin: 0 }
        },
        legend:{ show: true },
        cursor: {   
            show: false   
        }
    });
});
$('document').ready(function(){
        $('.column').sortable({
            connectWith:'.column',
            handle:'h2',
            cursor:'move',
            placeholder:'placeholder',
            forcePlaceholderSize:true,
            opacity:0.4,
            revert:true

        }).disableSelection();
}


    );
</script>
</head>
<body>
 <div class="column" id="column1">
        <div class="dragbox" id="item1" >
            <h2>Handle 1</h2>
            <div class="dragbox-content" >
                <div id="chart" style="width:100%;height:100%;float:left"></div>
            </div>
        </div>
 </div>
 <div class="column" id="column1">
        <div class="dragbox" id="item1" >
            <h2>Handle 1</h2>
            <div class="dragbox-content" >
                <div id="pie" style="width:100%;height:100%;float:left"></div>
            </div>
        </div>
 </div>
 <div class="column" id="column1">
        <div class="dragbox" id="item1" >
            <h2>Handle 1</h2>
            <div class="dragbox-content" >
                <div id="chart1" style="width:400px;height:300px;float:left"></div>
            </div>
        </div>
 </div>


<div id="barRender" style="width:400px;height:300px;float:left"></div>
</body>
</html>

2 个答案:

答案 0 :(得分:2)

好的,我得到了问题的答案。我们只需删除一行代码,然后事情就会很好用

 $.jqplot.config.enablePlugins = true;

当我删除上面的内容时,我会在需要时随时随地调用各个插件。当这个语句出现时,所有的插件都被启用了,这就是输出奇怪的原因。

答案 1 :(得分:0)

对于您的问题部分,您缺少荧光笔插件。如果你添加它,它将适用于拖动the points on the line chart。它不会抛出异常,但由于某些原因,拖动看起来很难看。我检查了一下,如果你在fill中停用了seriesDefaults,那么它看起来并不难看。显然他们有一些冲突。

我观察到饼图没有链接可拖动脚本,因为它在禁用时表现得很好。

修改

我弄清楚如何为@Shiv Kumar Ganesh用于解决问题的特定插件启用可拖动。 It is show here.重要的是:为isDragable: true设置series,为show: true设置highlighter