使用下拉菜单将JSON文件切换为可视化
Switch JSON file for a visualisation using a dropdown
我刚开始使用d3和JavaScript,当我试图用多个JSON文件创建可视化时,我遇到了一个问题。
我有两个JSON文件的格式相同,但包含不同的数据。我写了一个代码,从JSON文件产生两个线形图,它与任何一个文件一起工作。我想做的是使用下拉菜单在文件之间切换,这样我就可以选择显示哪些数据。
我希望有人有一个工作的例子,他们可以分享或可以告诉我如何做到这一点?
我的代码,因为它是(你可以看到,我正在使用文件All。Json,我希望能够使用下拉菜单引用不同的文件):
var h = 200;
var w = 400;
var padding = 40;
function buildline(ds) {
//scales
var xScale = d3.scale.linear()
.domain([
d3.min(ds.timeSeries, function(d) {
return d.year
}),
d3.max(ds.timeSeries, function(d) {
return d.year
})
])
.range([padding, w - padding]);
var yScale = d3.scale.linear()
.domain([0, d3.max(ds.timeSeries, function(d) {
return d.trips;
}) + padding])
.range([h - padding, 10]);
var yAxisGen = d3.svg.axis().scale(yScale).orient("left");
var xAxisGen = d3.svg.axis().scale(xScale).orient("bottom").tickFormat(d3.format("0000"));
var lineFun = d3.svg.line()
.x(function(d) {
return xScale(d.year);
})
.y(function(d) {
return yScale(d.trips);
})
.interpolate("linear");
var svg = d3.select("body").append("svg").attr({
width: w,
height: h
})
var yAxis = svg.append("g").call(yAxisGen)
.attr("class", "axis")
.attr("transform", "translate(" + padding + ", 0)");
var xAxis = svg.append("g").call(xAxisGen)
.attr("class", "axis")
.attr("transform", "translate(0, " + (h - padding) + ")");
var viz = svg.append("path")
.attr({
d: lineFun(ds.timeSeries),
"stroke": "green",
"stroke-width": 2,
"fill": "none"
});
}
function showHeader(ds) {
d3.select("body").append("h1")
.text(ds.category + " (2002-2013)");
}
d3.json("All.json", function(error, data) {
if (error) {
console.log(error);
} else {
console.log(data);
}
data.contents.forEach(function(ds) {
console.log(ds);
showHeader(ds);
buildline(ds);
})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<p>Choose Mode
<select id="mode-option">
<option = value ="All">All modes</option>
<option = value ="Other">Other</option>
</select>
</p>
你的select不需要额外的等号
<select id="mode-option">
<option value="All">All modes</option>
<option value="Other">Other</option>
</select>
然后分配一个事件侦听器,以根据选择
确定文件。document.getElementById('mode-option').addEventListener('change', function () {
var file = this.value + '.json';
d3.json(file, function (error, data) { ...
});
相关文章:
- 如何在谷歌可视化中组合数字和模式格式化程序
- 加载泰坦尼克号可视化数据时出现问题
- 如何使用图表包装函数有条件地格式化谷歌可视化表单元格
- AngularJS&Google可视化-使用状态更改处理程序(Google API)在HTML页面上查看$sco
- Javascript图形可视化工具包,具有高性能(500-1000个节点)
- Google可视化addListener调用函数引用错误
- 如何在web上动态可视化数据集
- 可视化到选择框中
- 从特定系列的谷歌可视化折线图中删除悬停工具提示
- 谷歌图表可视化仪表板数据源问题
- 在可视化中将CSS从悬停更改为单击
- 使用 d3 可视化快速射击的“点击”
- D3 Javascript可视化巨大XML文件的性能
- D3.js 和来自 CSV 文件图形宽度的数据可视化
- 谷歌可视化条形图文件未加载
- D3:加载多个CSV文件,并使用并行坐标将其可视化
- 可视化文件系统目录树字符串
- 使用下拉菜单将JSON文件切换为可视化
- 改变形状文件投影的可视化与D3
- 使用D3.js可视化世界地图,但无法可视化json文件