使用 jQuery Flot 绘制外部数据
我正在尝试使用 flot 插件来绘制一些写入 JSON 文件的数据。 这看起来并不难,但我找不到有用的东西......你能帮助我吗?
这就是我写的页面:
$(function () {
var data;
$.getJSON("1.json", function(json) {
var data = json;
});
var options = {
legend: {
show: true,
margin: 10,
backgroundOpacity: 0.5
},
points: {
show: true,
radius: 3
},
lines: {
show: true
}
};
var plotarea = $("#placeholder");
$.plot(plotarea , data, options);
});
虽然 1.json 文件包含以下所有内容:
{ label: "Values",
data: [
[1, 50.026],
[2, 50.028],
[3, 50.029],
[4, 50.026],
[5, 50.025],
[6, 50.016]
]
}
@MarcoJohannesen 即使我在 JSON 调用后编写“console.log(data)”,脚本仍然无法工作,并且没有消息出现屏幕。使用 Chrome 实用程序(我不记得名称了;-))我可以看到 hte 文件 1.json 已正确加载。我认为问题在于首先执行脚本,然后加载文件 1.json。我在页面上做了一些编辑。 您可以此页面上的演示 这是页面“1.htm”代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script language="javascript" type="text/javascript" src="jquery.js"></script>
<script language="javascript" type="text/javascript" src="jquery.flot.js"></script>
</head>
<body>
<h1>Graph</h1>
<div id="placeholder" style="width:600px;height:300px;"></div>
<script language="javascript" type="text/javascript">
$(function () {
var data;
$.getJSON("1.json", function(json) {
var data = json;
});
console.log(data);
var plotarea = $("#placeholder");
$.plot(plotarea , data);
});
</script>
</body>
</html>
这是 1.json(我添加了方括号)
[{ label: "Values",
data: [
[1, 50.026],
[2, 50.028],
[3, 50.029],
[4, 50.026],
[5, 50.025],
[6, 50.016]
]
}}
我肯定找到了制作工作页面的方法。这是我使用的代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script language="javascript" type="text/javascript" src="jquery.js"></script>
<script language="javascript" type="text/javascript" src="jquery.flot.js"></script>
</head>
<body>
<h1>Graph</h1>
<script language="javascript" type="text/javascript">
$(document).ready(function(){
$.getJSON("1.json", function(json) {
//succes - data loaded, now use plot:
var plotarea = $("#placeholder");
var data=[json.data];
$.plot(plotarea , data);
});
});
</script>
<div id="placeholder" style="width:600px;height:300px;"></div>
</body>
</html>
这是 json 文件(取自 flot 官方示例,以确保格式正确)
{
"label": "Europe (EU27)",
"data": [[1999, 1], [2000, 0.23], [2001, 3], [2002, 4], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]]
}
现在我要睡觉了,但明天我们应该尝试将标签添加到绘图中并尝试更多比一系列值。
I am trying to use flot plug-in to plot some data which are wrote into a JSON file.
It doesn't seem so hard to do but I can't find something that work...can you please help me.
That's the page I've wrote:
$(function () {
var data;
$.getJSON("1.json", function(json) {
var data = json;
});
var options = {
legend: {
show: true,
margin: 10,
backgroundOpacity: 0.5
},
points: {
show: true,
radius: 3
},
lines: {
show: true
}
};
var plotarea = $("#placeholder");
$.plot(plotarea , data, options);
});
while the 1.json file coitain all of the following:
{ label: "Values",
data: [
[1, 50.026],
[2, 50.028],
[3, 50.029],
[4, 50.026],
[5, 50.025],
[6, 50.016]
]
}
@MarcoJohannesen Even if I write "console.log(data)" after the JSON call the script still dowsn't work and no message appear on the screen. Using Chrome utility (I don't remember the name ;-)) I can see that hte file 1.json has been loaded correctly. I think that the problem is that first of all the script is executed and after that the file 1.json is loaded. I've made a little edit on the page.
You can see a demo on this page
This is the page "1.htm" code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script language="javascript" type="text/javascript" src="jquery.js"></script>
<script language="javascript" type="text/javascript" src="jquery.flot.js"></script>
</head>
<body>
<h1>Graph</h1>
<div id="placeholder" style="width:600px;height:300px;"></div>
<script language="javascript" type="text/javascript">
$(function () {
var data;
$.getJSON("1.json", function(json) {
var data = json;
});
console.log(data);
var plotarea = $("#placeholder");
$.plot(plotarea , data);
});
</script>
</body>
</html>
and this is the 1.json (I've added the square brackets)
[{ label: "Values",
data: [
[1, 50.026],
[2, 50.028],
[3, 50.029],
[4, 50.026],
[5, 50.025],
[6, 50.016]
]
}}
I definitely found a way to make a working page. That's the code I used:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script language="javascript" type="text/javascript" src="jquery.js"></script>
<script language="javascript" type="text/javascript" src="jquery.flot.js"></script>
</head>
<body>
<h1>Graph</h1>
<script language="javascript" type="text/javascript">
$(document).ready(function(){
$.getJSON("1.json", function(json) {
//succes - data loaded, now use plot:
var plotarea = $("#placeholder");
var data=[json.data];
$.plot(plotarea , data);
});
});
</script>
<div id="placeholder" style="width:600px;height:300px;"></div>
</body>
</html>
and that's the json file (taken from the flot official exaples to be sure that is correctly formatted)
{
"label": "Europe (EU27)",
"data": [[1999, 1], [2000, 0.23], [2001, 3], [2002, 4], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]]
}
now I'm going to bed but tomorrow I we should try to add the label to the plot and trying with more than one series of values.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我用它来生成项目进度的自动更新信息网站。
我的小例子使用了不止一种类型的图表:折线图和条形图。
我发现如果我有一个正在运行的示例,会更容易理解,所以我们在这里:
和数据(barLine.json):
I use this to generate automatic updated information website for project progress.
My small example using more than one type of diagram: line and bar.
I find it easier to understand if I have a running example, so here we are:
And the data(barLine.json):
试试这个:
在您的 JSON 文件中存在语法错误(以“[”开头并以“}”结尾。
你能试试这个吗:
Try this:
And in your JSON file there is a syntax error (starting with a "[" and ending with a "}".
Could you try this: