Javascript 在放大/缩小动态图表时,是否可以更改Y轴标签显示?

Javascript 在放大/缩小动态图表时,是否可以更改Y轴标签显示?,javascript,dygraphs,Javascript,Dygraphs,我已经创建了一个动态图表,显示标记鱼的运动,时间绘制在x轴上,距离移动显示在y轴上。河流中有十几个或更多的探测点,每个点距离其邻居约30-100公里。每个检测点都有四个或四个以上的探测器,标记为“D1”、“D2”和“…”Dx′。初始图表包含横跨近600km的y轴标签。在该分辨率下,我只希望看到检测点的主要标签,例如“锁1”、“锁2”、“锁6”等。当我深入到给定的位置时,然后,也只有在那时,我希望看到该位置单个探测器的次要标签(“D1”、“D2”等) 我正在使用动态图中的一个ticker函数将y轴

我已经创建了一个动态图表,显示标记鱼的运动,时间绘制在x轴上,距离移动显示在y轴上。河流中有十几个或更多的探测点,每个点距离其邻居约30-100公里。每个检测点都有四个或四个以上的探测器,标记为“D1”、“D2”和“…”Dx′。初始图表包含横跨近600km的y轴标签。在该分辨率下,我只希望看到检测点的主要标签,例如“锁1”、“锁2”、“锁6”等。当我深入到给定的位置时,然后,也只有在那时,我希望看到该位置单个探测器的次要标签(“D1”、“D2”等)

我正在使用动态图中的一个ticker函数将y轴标签映射到相应的河流位置。我希望仅当我放大一个站点时,次要标签才会显示在轴上,以便仅显示该站点自己的主要标签以及该站点的次要标签

我可以使用回调函数返回当前的y分辨率吗?我是否需要并且可以根据y分辨率在两个源列表之间切换


解决方案是在动态图ticker选项中加入一个ticker生成器/修改器函数,并在每次重新绘制图形时将我想要测试的参数传递给该函数。在我的应用程序中,我通过并测试了yAxisRange()中适当小的间隔,但在下面的简单示例中,我仅测试y轴的缩放状态

<!DOCTYPE html>
<html>
<head>
   <script type="text/javascript" src="http://dygraphs.com/dygraph-combined.js"></script>
</head>
<body>
   <div id="dgraphChartContainer" style="width:800px; height:600px;border:2px solid;border-radius:5px;"></div>
   <script type="text/javascript">
      //Define global variables
      var myLocationTable =
         [
                ["            D1",1001],
                ["            D2",1002],
                ["Station #1 ---",1002.5],
                ["            D3",1003],
                ["            D4",1004],

                ["            D1",2001],
                ["            D2",2002],
                ["Station #2 ---",2002.5],
                ["            D3",2003],
                ["            D4",2004],

                ["            D1",3001],
                ["            D2",3002],
                ["Station #3 ---",3002.5],
                ["            D3",3003],
                ["            D4",3004]
         ];

        function makeTickerList(isZoomed) {
         var myTempArray = [];
         var myTempObject = {};
         for (var i=0; i < myLocationTable.length; i++) {
                if (isZoomed) {
                    myTempObject = {
                        v: myLocationTable[i][1],
                        label: myLocationTable[i][0]
                    }
                } else {
                    myTempObject = {
                        v: myLocationTable[i][1],
                        label: (myLocationTable[i][0]).slice(0,-2)
                    }
                }
            myTempArray.push(myTempObject);
         }
         return myTempArray;
      }

        var vGraph = new Dygraph(document.getElementById("dgraphChartContainer"),
        [
            [ new Date("2010/09/30 21:00:00"),null,null,null ],
            [ new Date("2010/10/01 03:00:00"),1001,2003,3004 ],
            [ new Date("2010/10/01 09:00:00"),1002,2001,3003 ],
            [ new Date("2010/10/01 15:00:00"),1003,2002,3002 ],
            [ new Date("2010/10/01 21:00:00"),1004,2004,3001 ],
            [ new Date("2010/10/02 03:00:00"),2001,3001,2004 ],
            [ new Date("2010/10/02 09:00:00"),2002,3002,2003 ],
            [ new Date("2010/10/02 15:00:00"),2003,3003,2002 ],
            [ new Date("2010/10/02 21:00:00"),2004,3004,2001 ],
            [ new Date("2010/10/03 03:00:00"),3001,1004,1004 ],
            [ new Date("2010/10/03 09:00:00"),3002,1002,1003 ],
            [ new Date("2010/10/03 15:00:00"),3003,1003,1002 ],
            [ new Date("2010/10/03 21:00:00"),3004,1004,1001 ],
            [ new Date("2010/10/04 03:00:00"),null,null,null ]
        ],
            { //options
                labels: ["Event Date","Me","Myself","Irene"],
                axes: {
                         y: {
                         ticker: function(min, max, pixels, opts, dygraph, vals) {
                             return makeTickerList(dygraph.isZoomed("y"));
                         } //ticker closure
                        } //y-axis closure
                },  //end of axes declarations
                title: "Dynamic Y-Axis Ticker Test",
            strokeWidth: 2,
                yAxisLabelWidth: 110
            }  //options closure
        );  // end of dygraph declaration
   </script>
</body>
</html>

//定义全局变量
var myLocationTable=
[
[“D1”,1001],
[“D2”,1002],
[Station#1----”,1002.5],
[“D3”,1003],
[“D4”,1004],
[“D1”,2001年],
[“D2”,2002年],
[Station#2----”,2002.5],
[“D3”,2003年],
[“D4”,2004年],
[“D1”,3001],
[“D2”,3002],
[Station#3--”,3002.5],
[“D3”,3003],
[“D4”,3004]
];
函数makeTickerList(已缩放){
var myTempArray=[];
var myTempObject={};
对于(变量i=0;i
当图形完全绘制时,这仅显示“Station#x-”刻度标签,但当用户在y轴上放大时,显示每个桩号所有五个刻度的完整标签。这是我的建议

在本例中,我使用或修改了一组映射的记号,但这种动态方法可用于在每次绘制图形时根据内容生成一组新的记号