【发布时间】:2025-12-13 05:50:02
【问题描述】:
如果 X > 100,我想更改此折线图的颜色,我希望它变成“红色”
有没有一种方法可以根据 X 的值在笔触颜色样式中使用条件?
http://jsfiddle.net/iamjeannie/b445svob/1/enter link description here
var lineData = [ { "x": 1, "y": 5}, { "x": 20, "y": 20},
{ "x": 40, "y": 10}, { "x": 60, "y": 40},
{ "x": 80, "y": 5}, { "x": 100, "y": 60},
{ "x": 120, "y": 15}, { "x": 140, "y": 40},
{ "x": 160, "y": 25}, { "x": 180, "y": 20},
{ "x": 200, "y": 15}, { "x": 220, "y": 80},
{ "x": 240, "y": 35}, { "x": 260, "y": 60}
];
//This is the accessor function we talked about above
var lineFunction = d3.svg.line()
.x(function(d) { return d.x; })
.y(function(d) { return d.y; })
.interpolate("linear");
//The SVG Container
var svgContainer = d3.select("body").append("svg")
.attr("width", 200)
.attr("height", 200);
//The line SVG Path we draw
var lineGraph = svgContainer.append("path")
.attr("d", lineFunction(lineData))
.attr("stroke", "blue")
.attr("stroke-width", 2)
.attr("fill", "none");
【问题讨论】:
-
你想让你的一半路径有不同的颜色吗?据我所知,这在当前版本的 SVG 中是不可能的。您是否考虑过绘制多条路径而不是一条?
-
我猜问题是您一次提供整个数据集(而不是单个段),因此很难在这种方法中找到相关的子段。想到两个快速的想法:(1)单独绘制段并在
stroke属性中构建条件或(2)对数据应用过滤器并绘制两次(如上面@Oleg的评论) -
你可以用渐变来做。使用
userSpaceOnUse坐标定义渐变(实际上颜色会发生急剧变化),根据您要更改颜色的轴上的值,然后设置路径的描边以使用该渐变。请参阅this answer 了解类似情况,但使用一种模式,并提供进一步的解释和工作示例的链接。
标签: javascript jquery css d3.js