gpt4 book ai didi

javascript - 当我放大/缩小 dygraphs 图表时,我可以更改 Y 轴标签显示吗?

转载 作者:行者123 更新时间:2023-11-28 08:04:49 25 4
gpt4 key购买 nike

我创建了一个 dygraphs 图表,显示标记鱼的运动,时间绘制在 x 轴上,移动距离显示在 y 轴上。河流中有十几个或更多的检测点,每个点大约。距邻居30-100公里。每个检测站点有四个或更多检测器,标记为“D1”、“D2”、...“Dx”。初始图表在 y 轴上包含跨越近 600 公里的标签。在该分辨率下,我只想查看检测站点的主要标签,例如“锁定 1”、“锁定 2”、“锁定 6”等。当我深入到给定站点时,只有那时我想查看该站点各个探测器的次要标签(“D1”、“D2”等)

我在 dygraphs 中使用股票代码函数将 y 轴标签映射到相应的河流位置。我希望仅当我放大网站时次要标签才出现在轴上,这样只有该网站自己的主要标签以及该网站的次要标签才会出现。

Portion of an JS associative array used to map labels to the y-axis.

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

Initial view of the chart, with a y-axis range of ~600 km.

Intermediate zoom, displaying three four on the y-axis.

Zoomed in on Lock 9.  Here, and only at this scale, I want to display the indivdual detectors ('D1', 'D2', etc.

最佳答案

解决方案是在 Dygraphs 股票代码选项中合并股票代码生成器/修改器函数,并在每次重新绘制图表时向该函数传递我想要测试的参数。在我的应用程序中,我通过并测试了 yAxisRange() 中适当小的间隔,但在下面的简单示例中,我仅测试 y- 的 isZoomed 状态轴。

<!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>

当完整绘制图表时,这仅显示“Station#x -”刻度标签,但当用户放大 y 轴时,会显示每个站的所有五个刻度的完整标签。这是JSFiddle .

在此示例中,我使用或修改一组映射刻度线,但这种动态方法可用于在每次绘制图表时根据内容生成一组新的刻度线。

关于javascript - 当我放大/缩小 dygraphs 图表时,我可以更改 Y 轴标签显示吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24924938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com