3

我正在尝试用 2 行创建一个 JQ Plot。第一行包含第 1 天的每小时数据,第二行包含第 2 天的每小时数据。当我用这两条线创建图表时,我希望第二条线之上的一条线显示每小时数据比较。但我在图表上看到这两条线彼此相邻。

这里有样品

请让我知道如何调整图表选项以在另一条线之上显示一条线。谢谢你。

这是我的代码:

<html>
<head>
    <script src="http://www.jqplot.com/deploy/dist/jquery.min.js"></script>
    <script src="http://www.jqplot.com/deploy/dist/jquery.jqplot.min.js"></script>
    <script src=""></script>
    <link class="include" rel="stylesheet" type="text/css" href="http://www.jqplot.com/deploy/dist/jquery.jqplot.min.css" />
    <script class="include" type="text/javascript" src="http://www.jqplot.com/deploy/dist/plugins/jqplot.cursor.min.js"></script>
    <script class="include" type="text/javascript" src="http://www.jqplot.com/deploy/dist/plugins/jqplot.dateAxisRenderer.min.js"></script>
    <script class="include" type="text/javascript" src="http://www.jqplot.com/deploy/dist/plugins/jqplot.logAxisRenderer.min.js"></script>
    <script class="include" type="text/javascript" src="http://www.jqplot.com/deploy/dist/plugins/jqplot.canvasTextRenderer.min.js"></script>
    <script class="include" type="text/javascript" src="http://www.jqplot.com/deploy/dist/plugins/jqplot.canvasAxisTickRenderer.min.js"></script>
    <script type="text/javascript">
$(document).ready(function(){
    line1 = [["6/22/2009 10:00",425.32], ["6/22/2009 11:00",424.84], ["6/22/2009 12:00",417.23], ["6/22/2009 13:00",390], 
    ["6/22/2009 14:00",393.69], ["6/22/2009 15:00",392.24], ["6/22/2009 16:00",369.78], ["6/22/2009 17:00",330.16], ["6/22/2009 18:00",308.57], 
    ["6/22/2009 19:00",346.45], ["6/22/2009 20:00",371.28], ["6/22/2009 21:00",324.7]];

        line2 = [["6/23/2009 10:00",325.32], ["6/23/2009 11:00",324.84], ["6/23/2009 12:00",217.23], ["6/23/2009 13:00",190], 
    ["6/23/2009 14:00",593.69], ["6/23/2009 15:00",292.24], ["6/23/2009 16:00",369.78], ["6/23/2009 17:00",330.16], ["6/23/2009 18:00",308.57], 
    ["6/23/2009 19:00",446.45], ["6/23/2009 20:00",241.28], ["6/23/2009 21:00",624.7]];

    var plot1 = $.jqplot('chart1', [line1,line2], { 
        title: 'XYZ, Inc.', 
        series: [{ 
            label: 'XYZ, Inc.', 
            neighborThreshold: -1 
        }], 
        axes: { 
            xaxis: { 
                renderer:$.jqplot.DateAxisRenderer,
                tickRenderer: $.jqplot.CanvasAxisTickRenderer,
                tickOptions: {
                  angle: -30
                } 
            }, 
            yaxis: {  
                renderer: $.jqplot.LogAxisRenderer,
                tickOptions:{ prefix: '$' } 
            } 
        }, 
        cursor:{
            show: true, 
            zoom: true
        } 
    });
});
</script>

</head>
<body>
    <div id="chart1" style="height:200px; width:600px;"></div>
</body>
</html>​
4

3 回答 3

6

我在同样的问题上苦苦挣扎。

解决方案是定义第二个 x 轴,我们将其命名为 x2axis。

然后在您的系列配置中,指定您的系列之一将使用第二个 x 轴。

var plot1 = $.jqplot('chart1', [line1,line2], { 
    title: 'XYZ, Inc.', 
    series: [{ 
        label: 'primary series', 
        neighborThreshold: -1,
        xaxis: 'xaxis'
    }, {
        label: 'comparative series',
        xaxis: 'x2axis'
    }], 
    axes: { 
        xaxis: { 
            renderer:$.jqplot.DateAxisRenderer,
            tickRenderer: $.jqplot.CanvasAxisTickRenderer,
            tickOptions: {
              angle: -30
            } 
        },
        x2axis: {
            renderer:$.jqplot.DateAxisRenderer,
            tickRenderer: $.jqplot.CanvasAxisTickRenderer,
            tickOptions: {
              angle: -30
            } 
        },
        yaxis: {  
            renderer: $.jqplot.LogAxisRenderer,
            tickOptions:{ prefix: '$' } 
        } 
    }, 
    cursor:{
        show: true, 
        zoom: true
    } 
});

这是一个演示解决方案的 JS Fiddle

如果你的数据集有不同的长度,就会有额外的问题需要解决。查看我关于该主题的博客文章以获取更多详细信息。

干杯!

于 2013-11-26T20:54:35.413 回答
2

它对我有用。

例子:

var line1=[['2008-06-30 8:00AM',4], ['2008-7-14 8:00AM',6.5], ['2008-7-28 8:00AM',5.7], ['2008-8-11 8:00AM',9], ['2008-8-25 8:00AM',8.2]];
var line2=[['2008-06-30 8:00AM',6], ['2008-7-14 8:00AM',8.5], ['2008-7-28 8:00AM',8.7], ['2008-8-11 8:00AM',12], ['2008-8-25 8:00AM',8.2]];

var plot2 = $.jqplot('chart3', [line1,line2], {
    title:'Customized Date Axis', 
    axes:{
        xaxis:{
          renderer:$.jqplot.DateAxisRenderer, 
          tickOptions:{formatString:'%b %#d, %#I %p'},
          min:'June 16, 2008 8:00AM', 
          tickInterval:'2 weeks'
        }
    },
    series:[{lineWidth:4, markerOptions:{style:'square'}}]
});
于 2013-02-25T11:54:04.220 回答
2

我认为如果您使用 dateAxisRenderer 是不可能的,一个可能的解决方案是使用没有 dateAxisRenderer 的折线图

前任:

line1 = [[10,425.32], [11,424.84], [12,417.23], [13,390], [14,393.69], [15,392.24], [16,369.78], [17,330.16], [18,308.57], [19,346.45], [20,371.28], [21,324.7]];

line2 = [[10,325.32], [11,324.84], [12,217.23], [13,190], [14,593.69], [15,292.24], [16,369.78], [17,330.16], [18,308.57], [19,446.45], [20,241.28], [21,624.7]];

var plot3 = $.jqplot('chart1', [line1, line2 ], { 
  title: 'XYZ, Inc.', 
    series: [{ 
        label: 'XYZ, Inc.', 
        neighborThreshold: -1 
    }], 
    axes: {
        xaxis: {
            min: 1,
            max: 24,
            tickInterval: 2,
            tickOptions:{ suffix: ':00' } 
        },
         yaxis: {  
            renderer: $.jqplot.LogAxisRenderer,
            tickOptions:{ prefix: '$' } 
        } 
    },
    cursor:{
        show: true, 
        zoom: true
    } 
});
于 2013-01-03T03:44:54.693 回答