我是D3的新手,我发现它非常谦卑.
我的目标是从CSV文件制作树形图.我想使用CSV格式,因为我将使用电子表格中的值,并且我很容易以这种方式保存文件.
我试图以分层格式存储数据,如下所示(hier.csv):
parent,child,value
Homer Simpson,Bart,20
Homer Simpson,Lisa,14
Homer Simpson,Maggie,6
Peter Griffin,Chris,19
Peter Griffin,Meg,12
Peter Griffin,Stewie,9
Run Code Online (Sandbox Code Playgroud)
我正在使用这个Zoomable Treemap示例.
我希望树可以任意深入,即如果Bart在我的例子中有孩子,并根据姓名积累父/子关系.
我为Sankey Diagrams找到了一个很好的例子,但我没有找到Zoomable Treemaps的等价物.
有没有办法在Bostock的示例的第124和126行之间插入一些代码,以便为Zoomable Treemap正确格式化我的数据?(我可以更改CSV的布局,但希望保留CSV格式).像这种方法使用的东西nest(),但显然这不起作用:
d3.csv("./hier.csv", function(hier) {
var root = {
"name": "myrootnode",
"children": d3.nest()
.key(function (d) { return d.parent; })
.key(function (d) { return d.child; })
.entries(hier)
};
initialize(root);
accumulate(root);
layout(root);
display(root);
//etc...
Run Code Online (Sandbox Code Playgroud)
我看到了一些示例和StackOverflow问题,这些问题解决了这个问题的一些部分,但却未能将它们端到端地整合在一起.我一直在研究和黑客无济于事.我会欢迎一些帮助.谢谢!
骗子在这里
小提琴笔记:
更新
我克服了部分问题.我的想法并不是太过分了nest(),但我没有正确更新我的存取器.这是一个非常草率的看起来很有用的东西:http …
我正在使用Oracle 10g和Grails v2.0.1开发一个项目.
我正在尝试在我的Domain类中使用CLOB数据类型作为文本输入字段,但它似乎不起作用.我的第一次尝试是基于我在这里读到的关于GORM的内容,在哪里可以使用type: 'text',如下例:
class Address {
String number
String postCode
static mapping = {
postCode type: 'text'
}
}
Run Code Online (Sandbox Code Playgroud)
Grails将其映射到LONG我的数据库中的数据类型,这是不可取的
第二次尝试是尝试type: 'clob'.这有效地使我的DB数据类型为CLOB,但导致类转换错误,因为属性本身被定义为字符串,即String postCode.(请注意,我从未type:'clob'在文档中看到过,但我可以从方言类中推断出clob可能是有效的输入)
我随后尝试将该属性定义为java.sql.Clob,即Clob postCode;,并且根本不起作用.没有错误消息,但没有任何内容持续存在于DB中.
我采取了保持Clob方法的最后一步,但使用了一个瞬态String属性,其中getter/setter尝试将瞬态String值映射到持久性Clob字段.但我无法弄清楚如何将我的字符串值输入Clob.Grails没有抛出错误,但是println()在我尝试的赋值之后永远不会打印出来.我曾尝试过myClob.setString(1, theString)做作业,但没有成功.
所以长话短说,我似乎无法在我的场景中使用Clob,我想知道是否有其他人已经看到了这个并且能够克服它.如果是这样,你能告诉我我可能做错了什么吗?
或者...有没有办法覆盖Grails选择的数据类型,以便我可以强制它映射postCode type: 'text'到CLOB?我不熟悉Hibernate,所以如果有办法,我不知道如何去做.
旁注:在我们从Grails 1.3.7升级到2.0.1之前,我很确定它type: 'text'实际上是映射到Oracle中的CLOB.所以这可能是2.0.1的新功能.
是否可以let取消定义一个定义的变量,以便我可以重新定义它?使用var,我可以一遍又一遍地重新定义同一个变量。使用let,再次尝试定义变量时遇到错误。
(你可能想知道我为什么要这样做,原因是我经常从我的浏览器控制台运行和重新运行小的单行和多行脚本,从别处复制粘贴或作为书签。如果那些小脚本使用 定义了一个变量let,然后重新运行脚本失败。var在这些情况下我可以继续使用,但我正在尝试接受新订单。无论您认为我的用例是否有效,问题成立。)
我已经尝试delete从window对象和其他一些黑客攻击,但无济于事。
我是AngularJS的新手.我正在尝试在特定值更改时更新元素,但是当值通过JS更改时,不会触发更改; 它们仅在输入框中手动输入/模糊值时发生.
我从Angular Dev Guide分支的简单示例如下: *http://jsfiddle.net/3R5wn/*
<!-- Angular HTML -->
<div ng-app="">
<div ng-controller="InvoiceCntl">
<b>Invoice:</b>
<br>
<br>
<table>
<tr><td>Quantity</td><td>Cost</td></tr>
<tr>
<td><input type="integer" min="0" ng-model="qty" required id="myqty"></td>
<td><input type="number" ng-model="cost" required ></td>
</tr>
</table>
<hr>
<b>Total:</b> {{qty * cost | currency}}
</div>
</div>
<button onclick="document.getElementById('myqty').value=document.getElementById('myqty').value*1+1;">Increment Qty</button>
Run Code Online (Sandbox Code Playgroud)
角度控制器JS:
//Angular Controller JS
function InvoiceCntl($scope) {
$scope.qty = 1;
$scope.cost = 19.95;
}
Run Code Online (Sandbox Code Playgroud)
请注意,当用户手动(通过键盘)更改数量/价格框中的值时,将更新总计.但是,当用户单击"增量"按钮时,总数不会更新.
在我的简单例子中,有人能解释如何克服这个问题吗?我想避免过于讨厌的事情,那么处理这种情况是否有最好的做法?
笔记:
大编辑
这是我正在使用的实际代码(对不起,一个封闭的网络问题阻止我首先发布):
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html ng-app="">
<head>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/excite-bike/jquery-ui.css" …Run Code Online (Sandbox Code Playgroud) 我正在尝试将一组固定的 ASCII 字符映射到一组固定的 Unicode 字符。即,对于每个数字 0-9,我想获得等效的圆圈数字。
\nmapFrom="0123456789"\nmapTo="\xe2\x9e\x80\xe2\x9e\x81\xe2\x9e\x82\xe2\x9e\x83\xe2\x9e\x84\xe2\x9e\x85\xe2\x9e\x86\xe2\x9e\x87\xe2\x9e\x88"\n\ntoday=20221018\n\n#convert to "\xe2\x9e\x81\xe2\x9e\x81\xe2\x9e\x81\xe2\x9e\x80\xe2\x9e\x80\xe2\x9e\x87"\ntodayWithCircles=$(do_something_here) # <-- what's the "something"?\n\necho $todayWithCircles\n# output: \xe2\x9e\x81\xe2\x9e\x81\xe2\x9e\x81\xe2\x9e\x80\xe2\x9e\x80\xe2\x9e\x87\nRun Code Online (Sandbox Code Playgroud)\n给定两个长度相等的固定字符串,根据它们在字符串中的位置来映射它们的最简单方法是什么?
\n