D3如何将图像放在水平线文本旁边

Gar*_*ett 5 javascript css charts d3.js

我创建了这个显示结果情绪值的D3图表.然而,我正在努力做的是在水平文本旁边放置一个图像.以JSFiddle为例,假设"结果2"低于20%."结果2"文本的右侧会显示一个悲伤的面孔.然后,如果该值高于20%......将显示幸福的脸.是否有可能做到这一点?

JSFiddle: https ://jsfiddle.net/sopjzwst/3/

我在图表下面创建了两个不同的面,如下所示:

<img src="http://www.clipartkid.com/images/15/cartoons-cartoon-logos-cartoon-logo-design-gHlQ6b-clipart.jpg" alt="Smiley face" height="42" width="42">

<img src="http://www.clipartbest.com/cliparts/Rid/8EG/Rid8EGpi9.png" alt="Sad face" height="42" width="42">
Run Code Online (Sandbox Code Playgroud)

Ger*_*ado 3

您可以使用三元运算符来定义要附加到条形图旁边的图像:

svg.selectAll(".images")
    .data(data)
    .enter()
    .append("svg:image")
    .attr("x", function(d) {return x(d.value) + 4; } )
    .attr("y", function(d) { return y(d.sentiment) + 10; })
    .attr("width", 42)
    .attr("height", 42)
    .attr("xlink:href", function(d){
            return d.value < 20 ? 
            "http://www.clipartbest.com/cliparts/Rid/8EG/Rid8EGpi9.png" :
            "http://www.clipartkid.com/images/15/cartoons-cartoon-logos-cartoon-logo-design-gHlQ6b-clipart.jpg"
    });
Run Code Online (Sandbox Code Playgroud)

因此,如果d.value小于 20 (true),它会附加第一个链接,否则 (false) 它会附加第二个链接。

这是您更新的小提琴:https://jsfiddle.net/c3k8c3a4/

编辑要在刻度线旁边而不是条形图上显示图像,请相应地更改xy。这是小提琴: https: //jsfiddle.net/6uasj8hz/