我想使用下拉菜单更新一个交互式散点图在酒窝,但是我有一些问题与此任务。下面是我的代码示例:
<select name="xAX" id="xAX">
<option value ="Distance">Distance</option>
<option value ="Redshift">Redshift</option>
</select>
<div id ="chartContainer">
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="http://dimplejs.org/dist/dimple.v2.1.2.min.js"></script>
<script type="text/javascript">
var dropdown = d3.select("#xAX")
var xAX2 = dropdown.node().options[dropdown.node().selectedIndex].value;
d3.csv("tabula.csv", function(data) {
dataset = data.map(function(data) { return [
data["Object"],
+data["Redshift"],
+data["Distance"],
+data["Scale"],
data["Type"],
+data["IRAS12um"] ]; });
},
var svg = dimple.newSvg("#chartContainer", 900, 900);
var myChart = new dimple.chart(svg, data);
myChart.setBounds(100, 180, 730, 550)
myChart.showGridlines = true;
var x = myChart.addMeasureAxis("x", ["Redshift","Distance"]);
x.addOrderRule(["Redshift","Distance"]);
myChart.addMeasureAxis("y", "Redshift");
myChart.addMeasureAxis("z", "IRAS12um");
myChart.addSeries("Type", dimple.plot.bubble);
myChart.addLegend(70, 10, 610, 80, "right");
myChart.draw();
d3.select("#xAX").on("change", change)
function change() {
this.options[this.selectedIndex].value
}
myChart.draw(1000);
});
" table .csv"表有X个头,每个头有Y个元素。我希望x轴和/或y轴有任何可能的x标头选项。
我试过这个例子,但它并没有真正使我想要的。任何关于代码或其他示例的帮助将非常有帮助。
----- UPDATE ----
我更新了代码,我可以从下拉菜单中更改情节。然而,新图表是绘制在旧图表之上的。如何将旧地块移除?
<h2>X-Axis</h>
<select id="xAX" name="xAX">
<option value ="Distance" selected>Distance</option>
<option value ="Redshift">Redshift</option>
</select>
<div id="chartContainer">
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="http://dimplejs.org/dist/dimple.v2.1.2.min.js"></script>
<script type="text/javascript">
var svg = dimple.newSvg("#chartContainer", 900, 900);
var dropdown = d3.select("#xAX")
var change = function() {
var source = dropdown.node().options[dropdown.node().selectedIndex].value;
d3.csv("tabula.csv", function(data) {
var myChart = new dimple.chart(svg, data);
myChart.setBounds(100, 180, 730, 550)
var x = myChart.addMeasureAxis("x", source);
myChart.addMeasureAxis("y", "Redshift");
myChart.addMeasureAxis("z", "IRAS12um");
myChart.addSeries("Type", dimple.plot.bubble);
myChart.addLegend(70, 10, 610, 80, "right");
myChart.draw();
});
}
dropdown.on("change", change);
change();
</script>
试试这样:
<h2>X-Axis</h>
<select id="xAX" name="xAX">
<option value ="Distance" selected>Distance</option>
<option value ="Redshift">Redshift</option>
</select>
<div id="chartContainer">
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="http://dimplejs.org/dist/dimple.v2.1.2.min.js"></script>
<script type="text/javascript">
var svg = dimple.newSvg("#chartContainer", 900, 900);
var dropdown = d3.select("#xAX")
var xAxis;
var myChart;
var draw = function() {
var source = dropdown.node().options[dropdown.node().selectedIndex].value;
d3.csv("tabula.csv", function(data) {
myChart = new dimple.chart(svg, data);
myChart.setBounds(100, 180, 730, 550)
xAxis = myChart.addMeasureAxis("x", source);
myChart.addMeasureAxis("y", "Redshift");
myChart.addMeasureAxis("z", "IRAS12um");
myChart.addSeries("Type", dimple.plot.bubble);
myChart.addLegend(70, 10, 610, 80, "right");
myChart.draw();
});
}
var change = function() {
var source = dropdown.node().options[dropdown.node().selectedIndex].value;
xAxis.categoryFields = source;
myChart.draw();
};
dropdown.on("change", change);
draw();
</script>
如果你在myChart中添加延迟,这将使你不必删除原始svg对象。画(800,假);在change函数中,它将使更改变成动画