Facebook网络数据API和D3.JS
Facebook web data API and D3.JS
我正在尝试构建一个简单的面板,其中有一个条形图,显示我拥有的页面的帖子,并按共享数量进行排名。我只想使用Javascript和D3.JS来构建它
FB.api(
'/me',
'GET',
{"fields":"id,name,posts{name,shares}"},
function(response) {
// Insert your code here
}
);
从那里我希望能够将数据传递到我的D3.js代码中。我该怎么做?我需要使用node.js或类似的东西吗?我可以检索数据,但我只知道在javascript控制台中打印它们。
我不希望有人给我完整的代码,但提示我应该做什么会很好。
谢谢,
西蒙。
希望这能对您有所帮助。
<fb:login-button autologoutlink="true">
</fb:login-button>
<div>
<div id="canvas-svg"></div>
</div>
var simplebarchart = function (options) {
var __ = options || {};
__.CHART_NAME = __.CHART_NAME || 'areachart';
__.CONTAINER = __.CONTAINER || 'canvas-svg';
__.WIDTH = __.WIDTH || 800;
__.HEIGHT = __.HEIGHT || 800;
__.MERGIN = __.MERGIN || {top: 20, right: 20, bottom: 30, left: 50}
__.Y_AXIS_LABEL = __.Y_AXIS_LABEL || "Count";
__.X_DATA_PARSE = __.X_DATA_PARSE || function (d) {
return d;
};
__.Y_DATA_PARSE = __.Y_DATA_PARSE || parseInt;
__.Y_DATA_FORMAT = __.Y_DATA_FORMAT || function (i) {
return i;
};
__.X_AXIS_COLUMN = __.X_AXIS_COLUMN || "name";
__.Y_AXIS_COLUMN = __.Y_AXIS_COLUMN || "talking_about_count";
var margin = __.MERGIN,
width = __.WIDTH - margin.left - margin.right,
height = __.HEIGHT - margin.top - margin.bottom;
var x = d3.scale.ordinal()
.rangeRoundBands([0, width], 0.1);
var y = d3.scale.linear()
.range([height, 0]);
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom");
var yAxis = d3.svg.axis()
.scale(y)
.orient("left")
.tickFormat(__.Y_DATA_FORMAT);
var svg = d3.select('#' + __.CONTAINER).append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.attr('class', __.CHART_NAME)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
this.render = function (data) {
x.domain(data.map(function (d) {
return __.X_DATA_PARSE(d[__.X_AXIS_COLUMN]);
}));
y.domain([0, d3.max(data, function (d) {
return __.Y_DATA_PARSE(d[__.Y_AXIS_COLUMN]);
})]);
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
svg.append("g")
.attr("class", "y axis")
.call(yAxis)
.append("text")
.attr("transform", "rotate(-90)")
.attr("y", 6)
.attr("dy", ".71em")
.style("text-anchor", "end")
.text(__.Y_AXIS_LABEL);
svg.selectAll(".bar")
.data(data)
.enter().append("rect")
.attr("class", "bar")
.attr("x", function (d) {
return x(d[__.X_AXIS_COLUMN]);
})
.attr("width", x.rangeBand())
.attr("y", function (d) {
return y(d[__.Y_AXIS_COLUMN]);
})
.attr("height", function (d) {
return height - y(d[__.Y_AXIS_COLUMN]);
});
function type(d) {
d[__.Y_AXIS_COLUMN] = +d[__.Y_AXIS_COLUMN];
return d;
}
};
};
// initialize fb API
window.fbAsyncInit = function() {
FB.init({
appId : '208005292601743',
xfbml : true,
version : 'v2.9'
});
FB.Event.subscribe('auth.login', function() {
window.location.reload();
});
FB.getLoginStatus(function (response) {
if (response.status === 'connected') {
var accessToken = response.authResponse.accessToken;
var user_id = response.authResponse.userID;
// init bar chart
var chart = new simplebarchart({});
FB.api(
'/me',
'GET',
{"fields":"likes.limit(10){created_time,name,talking_about_count}"},
function(response) {
var data = [].slice.call(response.likes.data);
//render bar chart
chart.render(data);
}
);
}
});
};
相关文章:
- 如何在d3.js中返回路径的y坐标
- 有条件更新d3.js力图中节点的最佳方法
- 使用D3.js计算带有字母间距的文本长度
- D3.js模式不适用于弧形或圆环图
- d3.js Chord图的动态工具提示
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- HTML5FileReader输出到D3.js图表
- D3.js生成有效的SVG,但不显示任何内容
- d3.js:限制画笔的大小
- d3.js用按钮更新条形图工具提示
- 如何为d3.js图表输出组织/嵌套数据
- d3-js快速事件调用问题
- D3.JS向rect添加缩放和列表项
- d3.js圆的半径是否可以由样式属性指定
- 如何在d3.js中自定义事件侦听器
- 在新窗口上使用d3.js
- 如何用d3.js绘制折线图
- 使用dc.js、d3.js和crossfilter引用错误
- D3.js剪辑路径截断了我的图的边缘
- D3.js和坐标系