我正在使用D3绘制有向非循环图,我希望能够通过将边(和箭头)的颜色更改为该路径来突出显示所选节点的路径.我很容易改变边缘颜色,但我无法弄清楚如何改变相应箭头的颜色.在最适用的来源,我发现表明,这是没有可能的,但它也从大约两年前,所以我想看看是否一切都变了.我用来创建链接,箭头和更新链接颜色的代码如下:
graph.append("svg:defs").selectAll("marker")
.data(["end"])
.enter().append("svg:marker")
.attr("id", String)
.attr("viewBox", "0 -5 10 10")
.attr("refX", 20)
.attr("refY", 0)
.attr("markerWidth", 6)
.attr("markerHeight", 6)
.attr("orient", "auto")
.style("fill", "gray")
.append("svg:path")
.attr("d", "M0,-5L10,0L0,5");
. . .
var link = graph.append("svg:g").selectAll("line")
.data(json.links)
.enter().append("svg:line")
.style("stroke", "gray")
.attr("class", "link")
.attr("marker-end", "url(#end)");
. . .
function highlightPath(node) {
d3.selectAll("line")
.style("stroke", function(d) {
if (d.target.name == node) {
highlightPath(d.source.name);
return "lightcoral";
} else {
return "gray";
}
});
}
Run Code Online (Sandbox Code Playgroud)
任何建议都会很棒.谢谢.
这似乎是一个相当普遍的问题,但我所看到的解决方案并没有解决错误.我试图从JSON文件中读取NSMutableArray.我见过的许多建议涉及使用mutableCopy或[NSMutableArray arrayWithArray:],但这两个解决方案在使用调用replaceObjectAtIndex:withObject时都没有解决问题:见下文.如果您对如何解决此问题有任何建议,请告诉我.
编辑:我还想补充说,库存清单是NSMutableArray对象的NSMutableArray.
确切的错误如下:
Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: '-[__NSCFArray replaceObjectAtIndex:withObject:]:
mutating method sent to immutable object'
Run Code Online (Sandbox Code Playgroud)
我在我的实现文件的顶部定义了如下属性:
NSMutableArray *inventoryData;
Run Code Online (Sandbox Code Playgroud)
我试图从JSON文件中读取它,如下所示:
- (void)readJSON
{
//Code to get dictionary full of saves from JSON file (overworld.json) - includes the file path on the ipad as well as
//the dictionary itself
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *localPath = [[NSString alloc] initWithString:[documentsDirectory stringByAppendingPathComponent:@"savedPaintGameData.json"]];
NSString …Run Code Online (Sandbox Code Playgroud)