javascript和python返回的相同数据结构在d3.js中表现不同
Same data structure returned from javascript and python behaves differently in d3.js
当我使用javascript源文件中的数据结构时:
var data = [{'x': 100, 'y': '65'},
{'x': 122, 'y': '57'},
{'x': 144, 'y': '101'},
{'x': 166, 'y': '87'},
{'x': 188, 'y': '8'},
{'x': 210, 'y': '180'},
{'x': 232, 'y': '132'},
{'x': 257, 'y': '190'},
{'x': 276, 'y': '210'},
{'x': 298, 'y': '150'}]
和alert
我的主文件中的数据,它显示:
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
它也适用于:
alert(d3.max(data,function(d) { return d.count;}))
但是当我使用python作为源文件并返回以下内容时:
data = [{'x': 100, 'y': '65'},
{'x': 122, 'y': '57'},
{'x': 144, 'y': '101'},
{'x': 166, 'y': '87'},
{'x': 188, 'y': '8'},
{'x': 210, 'y': '180'},
{'x': 232, 'y': '132'},
{'x': 257, 'y': '190'},
{'x': 276, 'y': '210'},
{'x': 298, 'y': '150'}]
abc=json.dumps(data)
print data
警报也显示相同:
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
但这不起作用:
alert(d3.max(data,function(d) { return d.count;}))
这是我的全部代码
function add_py()
{
var count = $( "#count" ).val();
$.ajax({
type: "get",
url: "abc.py",
data: {'count': count},
datatype:"script",
async: false,
success: function(response) {
var data= JSON.parse(response);
showGraph(data);
}, // success closed
error:function(xhr,err)
{
alert("Error connecting to server, please contact system administator.");
}
})//ajax closed
}
function showGraph(de) {
alert(de)
var mySVG = d3.select("body").append("svg");
mySVG
.attr("width", 500)
.attr("height", 500);
var heightScale = d3.scale.linear()
.domain([0, 963])
.range([0, 400]);
alert(d3.max(de,function(d) { return d.count;}))
var heightScale = d3.scale.linear()
.domain([0, d3.max(de,function(d) { return d.count;})])
.range([0, 400]);
var myBars = mySVG.selectAll('circle')
.data(de)
.enter()
.append('svg:circle');
myBars
.attr('r',20);
myBars
.attr('cx',function(d,i) {return (i * 22) + 100;})
.attr('cy',function(d,i) {return 400 - heightScale(d.count);});
}
我知道js和python文件中的数据可能表现不同,但如何使python数据像js数据一样工作。提前谢谢。
我不知道你是如何混合JavaScript和Python的,我只是假设你试图将data
对象作为字符串从Python程序加载(也许是通过服务器?)。在这种情况下,您需要解析字符串,并通过以下操作将其转换为JSON对象(即内部JavaScript对象):
data = JSON.parse(data)
在您的主文件中。
EDIT:还要确保你的Python程序将你的字典输出为有效的JSON格式,只是print
如果它不起作用,你需要类似json.dumps(data)
的东西。
相关文章:
- 如何在d3.js中返回路径的y坐标
- 有条件更新d3.js力图中节点的最佳方法
- 使用D3.js计算带有字母间距的文本长度
- D3.js模式不适用于弧形或圆环图
- d3.js Chord图的动态工具提示
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- HTML5FileReader输出到D3.js图表
- D3.js生成有效的SVG,但不显示任何内容
- 更改 JS/D3 页上的元素位置
- 带有更新按钮.js D3 将新数据添加到旧数据而不是替换旧数据
- D3.js d3.max undefined
- 为什么我的 js.d3 代码不显示轴
- dc.js d3+crossfilter.top将过滤后的数据导出为CSV
- 如何在Plottable.js/D3.js制作的饼图中启用qtip2
- 2dimple.js/d3.js在窗口大小更改时自动调整图表大小
- D3.js D3.json返回Uncaught TypeError:无法读取属性'0'的未定义
- 如何计算(SVG) X/Y坐标的平移和旋转(在JS/D3.js)
- 当我们需要信任大约 200-300 个自定义图表时.js D3 是最佳选择吗?
- 简单条形图按字符串名称分组,带有 DC.js D3.js 和交叉过滤器.js
- 缺少标签- Cola.js/D3.js