javascript-带搜索框的D3图表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-带搜索框的D3图表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4121字,纯文字阅读大概需要6分钟。
内容图文
![javascript-带搜索框的D3图表](/upload/InfoBanner/zyjiaocheng/669/af07d47baae34c7c9180d0d33bdb364a.jpg)
我在D3中创建了一个图表,其中的节点显示特定个人创建文档的时间.该图表还显示了一个搜索框,根据搜索框输入是否与该文档关联的单词相匹配(这些单词在数据集的第5列中列出-请参见下面的数据集),该节点将节点变为红色.
我的问题是:将搜索输入到框中(即“鱼”)后,网站访问者必须点击“刷新”才能运行新的搜索(即“狗”).我宁愿取而代之,当启动新的搜索时,该图表仍保持可见,并且“尝试”按钮仅切换节点的颜色以反映新的搜索选择.这是我到目前为止的内容:
html,
body {
margin: 0;
height: 100%;
}
g.hidden line,
g.hidden path {
display: none;
}
path {
stroke: navy;
stroke-width: 2px;
fill: none;
}
circle {
fill: #FF00FF;
stroke: navy;
stroke-width: 2px;
}
g.tick text y {
font-size: 30px;
font: Garamond;
}
g.tick text x {
font-size: 10px;
font: Garamond;
}
g.tick line {
display: none;
<!-- begin snippet: js hide: false console: true babel: false -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta chartset="utf-8">
<title>Interactive scatterplot</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="d3.v4.js"></script>
</head>
<body>
<script>
var txtName = 0;
function sayHi() {
var txtName = document.getElementById("txtName");
console.log(txtName.value);
var parseDate = d3.timeParse("%m/%d/%Y");
d3.csv("doc.csv")
.row(function(d) {
return {
creator: d.creator,
date: parseDate(d.date),
number: Number(d.number),
doc: d.doc
};
})
.get(function(error, data) {
var height = 300;
var width = 500;
var minDate = new Date(2000, 1, 1);
var maxDate = new Date(2011, 1, 1);
var y = d3.scaleOrdinal()
.domain(['', 'may', 'milly', 'maggie', 'molly', ''])
.range([300, 225, 150, 75, 15, 0]);
var x = d3.scaleTime()
.domain([minDate, maxDate])
.range([0, width]);
var yAxis = d3.axisLeft(y);
var xAxis = d3.axisBottom(x);
var svg = d3.select("body").append("svg").attr("height", "100%").attr("width", "100%");
margin = {
top: 40,
right: 50,
bottom: 0,
left: 50
};
var redBox = svg.append("rect")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")")
.attr("y", 0)
.attr("width", width)
.attr("height", height)
.attr("fill", "orange");
var chartGroup = svg.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
svg.selectAll("circle")
.data(data)
.enter().append("circle")
//.filter(function(d) {return d.doc = "milly";})
.attr("transform", "translate(" + margin.left + "," + margin.top + ")")
.attr("cx", function(d) {
return x(d.date);
})
.attr("cy", function(d) {
return y(d.creator);
})
.attr("r", 4)
.style("fill", function(d) {
if (d.doc == txtName.value) {
return "red"
} else {
return "black"
}
});
console.log(txtName.value);
chartGroup.append("g").attr("class", "x axis").attr("transform", "translate(0," + height + ")").call(d3.axisBottom(x).ticks(14));
chartGroup.append("g").attr("class", "y axis").call(d3.axisLeft(y).ticks(5));
});
}
</script>
<textarea id="txtName" name="txt-Name" placeholder="Search for something.."></textarea>
<button onclick="sayHi()">Try it</button>
<!-- <div class="test-wrapper"> -->
<!-- </div><!-- .test-wrapper -->
</body>
</html>
这是数据集:
date number creator doc
6/16/2000 3 molly 3 rat
2/25/2002 4 may 2 cat
12/05/2004 3 molly 4 fish
07/06/2006 1 milly 1 dog
09/07/2003 4 may 4 fish
12/10/2001 4 may 3 rat
6/15/2005 2 maggie 3 rat
06/09/2004 1 milly 4 fish
10/05/2005 1 milly 3 rat
10/07/2003 4 may 1 dog
1/19/2009 4 may 2 cat
10/30/2007 1 milly 4 fish
8/13/2009 4 may 2 cat
9/30/2004 3 molly 1 dog
1/17/2006 4 may 3 rat
12/18/2009 3 molly 1 dog
11/02/2007 2 maggie 3 rat
4/17/2007 1 milly 4 fish
当前,图形的创建和获取搜索框值的过程属于一种功能.我试图将它们分开,但是在创建图形之前结束函数意味着该图形无法识别变量txtName.我还尝试将与圆圈颜色有关的块复制粘贴到sayHi函数,但这会使图形无响应.
任何帮助表示赞赏.
解决方法:
现在,单击按钮后,您正在绘制图表.当用户单击按钮时,更改圆形的颜色不是一个好主意.
因此,请完全删除该内联函数调用和sayHi函数.然后,在d3.tsv回调(这是TSV,而不是CSV)中,获取文本区域的值:
d3.select("button").on("click", function() {
var txtName = d3.select("#txtName").node().value;
circles.style("fill", function(d) {
return d.doc === txtName ? "red" : "black";
})
})
在这里,圈子是您圈子的选择.请记住命名您的选择.
这是使用您的代码的演示:https://jsfiddle.net/dhy4yt2z/1/
PS:您的代码还有其他一些小问题需要纠正,例如使用边距.
内容总结
以上是互联网集市为您收集整理的javascript-带搜索框的D3图表全部内容,希望文章能够帮你解决javascript-带搜索框的D3图表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。