用javascript中的d3绘制圆圈并在上面写文字
Drawing circles and writing text on them using d3 in javascript
我是一名新的javascript程序员。我正在尝试制作一个可视化组件,其中我必须画一个圆圈并在上面写一些东西("基本上每个圆圈上都有一个字母"),代码如下
var svgcontainer = d3.select("body").append("svg")
.attr("width",width)
.attr("height",height);
d3.json("real.json",function(json){
var elem = svgcontainer.selectAll("div")
.data(json.residues);
var elemEnter = elem.enter()
.append("g");
var circle = elemEnter.append("circle")
.attr("cx",50)
.attr("cy",50)
.attr("r",10)
.style("fill","red");
elemEnter.append("text")
.attr("dx",-20)
.text(function(d){return d.name});
}) ;
代码是画圆圈,但不在上面写任何字母。json示例文件如下
{
"residues":[
{"name":"A","mut":[
{"what":"A1H","type":"non-neutral"}
]},
{"name":"H"}
]}
请帮我修改代码,在上面画一个圆圈并写一个字母。
var svgcontainer = d3.select("body").append("svg")
.attr("width", 200)
.attr("height",200);
//d3.json("real.json",function(json){
var json = {
"residues":[
{"name":"A","mut":[
{"what":"A1H","type":"non-neutral"}
],"cx": 50,"cy":50, "r":20},
{"name":"H","cx": 90,"cy":80, "r":20}
]};
var elem = svgcontainer.selectAll("div")
.data(json.residues);
var elemEnter = elem.enter()
.append("g");
var circle = elemEnter.append("circle")
.attr("cx",function(d){ return d.cx;})
.attr("cy",function(d){ return d.cy;})
.attr("r",function(d){ return d.r;})
.style("fill","red");
elemEnter.append("text")
.attr("dy", function(d){
return d.cy+5;
}).attr("dx",function(d){ return d.cx-5;})
.text(function(d){return d.name});
//}) ;
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
var circle = elemEnter.append("circle")
.attr("cx",50)
.attr("cy",50)
.attr("r",10)
.style("fill","red");
不要使用静态值来设置圆的cx、cy和r值,使用静态值会将所有圆设置在一个位置,我们不能看到所有圆,只有圆可见。
elemEnter.append("text")
.attr("dx",-20)
.text(function(d){return d.name});
在这里,我们还将文本的dx值设置为-20,负值将从svg中取出元素,所以我们看不到文本,尝试根据圆cx和cy设置文本的dx和dy值,这将同时设置这两个值。
我做了所有的改变,希望你拿到了。如果不要求我更多。
相关文章:
- 检查元素是否悬停在上面
- 用javascript中的d3绘制圆圈并在上面写文字
- 将鼠标悬停在按钮上会导致另一个按钮悬停在上面
- Javascript 对象文字在对象文字中
- ExtJS面板总是“在前面”/总是“在上面”
- 在对象文字的声明中继承上下文(this)?“自我”还好吗
- 如何制作一个按钮,当悬停在上面时,会滑动并显示链接 (JS)
- Chrome扩展程序:如何让HTML元素被鼠标悬停在上面
- 在对象文字上调用函数,由字符串 - JavaScript 表示
- jQuery:当用户将鼠标悬停在上面时具有较大图片的按钮
- 错误:“标识符在数字文字 javascript 之后立即启动”
- 将引导程序附加到子导航的顶部,而不是在上面,引导程序
- Javascript:在对象文字函数中定义的事件侦听器使代码死亡
- 如何在同一文字中访问刚刚在文字中定义的函数
- Hapi.js文件上传我如何获取文件,这样我就可以在上面使用imageMagick命令行工具
- 如何在对象文字中向函数传递参数
- 当结果应该很简单时,在对象文字中获取Undefine
- 为什么可以't我在对象文字中访问this.properties
- 为什么要在对象文字中的键值对后面留一个逗号呢
- 为什么拥有`<脚本>`在字符串文字中导致JS语法错误