在这个JS代码中,我用d3库和Vue框架做了一个折线图。折线图遵循两个数据集 data1 和 data2。我已经通过在方法中返回HTML文件(参见xyz()函数)使html文件可以访问createSvg()属性。
但是当我单击输出中显示的按钮时,图形不会更改,这意味着按钮不起作用。
我的代码中有什么错误?请给我一些建议。
var app = new Vue({
el: "#app",
data(){
},
methods:{
xyz:function(data){
return this.createSvg
}
},
computed:{
createSvg(){
var data1 = [
{ser1: 0.3, ser2: 4},
{ser1: 2, ser2: 16},
{ser1: 3, ser2: 8}
];
var data2 = [
{ser1: 1, ser2: 7},
{ser1: 4, ser2: 1},
{ser1: 6, ser2: 8}
];
// set the dimensions and margins of the graph
var margin = {top: 10, right: 30, bottom: 30, left: 50},
width = 460 - margin.left - margin.right,
height = 400 - margin.top - margin.bottom;
// append the svg object to the body of the page
var svg = d3.select("#my_dataviz")
.append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.attr("fill", "blue")
.append("g")
.attr("transform",
"translate(" + margin.left + "," + margin.top + ")");
// Initialise a X axis:
var x = d3.scaleLinear().range([0,width]);
var xAxis = d3.axisBottom().scale(x);
svg.append("g")
.attr("transform", "translate(0," + height + ")")
.attr("class","myXaxis")
// Initialize an Y axis
var y = d3.scaleLinear().range([height, 0]);
var yAxis = d3.axisLeft().scale(y);
svg.append("g")
.attr("class","myYaxis")
// Create a function that takes a dataset as input and update the plot:
function update(data) {
// Create the X axis:
x.domain([0, d3.max(data, function(d) { return d.ser1 }) ]);
svg.selectAll(".myXaxis").transition()
.duration(3000)
.call(xAxis);
// create the Y axis
y.domain([0, d3.max(data, function(d) { return d.ser2 }) ]);
svg.selectAll(".myYaxis")
.transition()
.duration(3000)
.call(yAxis);
// Create a update selection: bind to the new data
var u = svg.selectAll(".lineTest")
.data([data], function(d){ return d.ser1 });
};
繁华开满天机
长风秋雁
相关分类