svg = d3.select("#svg1");
这是我在页面上已经有这个元素了。也可以使用其他的方式。
比如使用enter()函数。使用它的前提是使用data()函数。根据data()函数传入的参数个数,enter()函数可以自动补齐页面尚不存在的svg元素。
同样的,如果想要根据数据动态地生成元素,也可以使用enter(),不是仅仅局限于对svg才可使用。
data()函数的参数是一个数据集,其结构可以是哈希的——对不起,我就是喜欢把它叫成哈希╭(╯^╰)╮——所以可以根据自己的需要,添加各种键值对。在后续创建元素中,动态地进行赋值。具体可以看下面第三条。
2 设置attribute
d3.js添加attribute使用的是attr(name, value)方法,这个方法适用于设置画布高度、设置元素坐标等
1)设置高度,宽度
可应用于画布和图中的各个元素宽高
svg.attr("width", width) //设定宽度
.attr("height", height); //设定高度
2)设置坐标 (x,y):
svg.selectAll('g').data(dataset)
.enter()
.append("g")
.append("rect")
.attr("x",function(d,i){//每个矩形的起始x坐标
var x = parseInt(d['x']);
return x.toString();
})//每个矩形的起始x坐标
.attr("y",function(d,i){//每个矩形的起始y坐标
var y = parseInt(d['y']);
y = -1 * y; // 注意d3的象限,如果不将y坐标取反,有可能图跟你想要的是上下翻转的。
return y.toString();
3. 设置内联样式
内联样式的设置使用函数style(name, value)。适用于画布背景颜色、元素填充颜色、边框宽度和颜色等等。
应该凡是可以写进内联样式的样式,都可以这么添加吧。
举几个例子:
1)设置边框宽度和颜色:
.style("storke-width", "0.2") //宽度
.style("stroke","#bababa")//颜色
2)设置填充颜色:
.style("fill",function(d){
return d['color'];
})
3 文字设置
想要在矩形框中间写上文字,需要这样做:
首先明确结构。想要让文字显示在矩形上,必须要将矩形元素和对应的text元素括在同一个g元素当中,形如:
<g xmlns="http://www.w3.org/2000/svg">
<rect style="fill: XXX; stroke: XXX;" x="0" y="0" width="5" height="5" />
<text style="font-size: XXX" x="XXX" y="XXX">abc</text>
因此我们需要先创建矩形框,然后创建对应的文字元素。
第一步,创建矩形框:
svg.selectAll('g').data(dataset)
.enter()//根据dataset来自动生成g元素
.append("g") //这个是必须的。rect和对应的text元素要被同一个g元素包含住
.append("rect")
.attr("x",function(d,i){//每个矩形的起始x坐标
var x = parseInt(d['x']); //这里的d就是dataset
return x.toString();
.attr("y",function(d,i){//每个矩形的起始y坐标
return d['y'];
.attr("width", die_width)
.attr("height",die_height)//每个矩形的高度
.style("fill",function(d){//每个矩形的颜色
return d['color'];
.style("storke-width", "0.2") //边框宽度
.style("stroke","#bababa")
//如果有其他需要的attribute或者内联样式,可以继续往上添加
第二步,创建text元素
创建text元素使用的是text()方法。
当然,除了让text元素和rect元素都放在g元素里之外,还需要让二者的坐标匹配——不是要求它俩必须一样,二者的坐标是分开设置的,所以如果设置不对,即使他们在一个g里头,文字也可能飞到天边外国去……
//setup text on each die (which means on each ret)
svg.selectAll('g').data(dataset)// 这三件套必须重新写一遍!不能直接接着前面生成rect元素的来
.append('text') //生成text元素。注意,这里就不要再加.enter()了
.attr("x",function(d,i){//每个矩形的起始x坐标
//...
.attr("y",function(d,i){
//...
}).text(function(d) { //添加文字描述
return d['text'];
.style("font-size", "50%")//设置文字大小
// 同样,需要其他attr和内联样式,可以自己添加
效果大概是这样的:
1 设置svgsvg = d3.select("#svg1");这是我在页面上已经有这个元素了。也可以使用其他的方式。比如使用enter()函数。使用它的前提是使用data()函数。根据data()函数传入的参数个数,enter()函数可以自动补齐页面尚不存在的svg元素。同样的,如果想要根据数据动态地生成元素,也可以使用enter(),不是仅仅局限于对svg才可使用。...
svg.inliner.js
将所有链接的 SVG 图像替换为用于 DOM/CSS 操作的内联版本。
可用作导出单个函数 (SVGInliner) 的 UMD 模块,该函数将可选的 CSS 选择器作为参数。 默认行为会转换在页面上找到的所有 SVG 图像。
尚未(尚未)在 Internet Explorer 上进行测试。
有关实时演示,请参见 example.html。 (必须通过 HTTP 服务器访问,如嵌入式 grunt-connect)
许可麻省理工学院
1、下载d3.js和d3.layout.cloud.js,下载地址忘了,自己上网找,这里将d3.layout.cloud.js的代码贴出:
// Word cloud layout by Jason Davies, http://www.jasondavies.com/word-cloud/
// Algorithm due to Jonathan Feinberg, http://sta
背景:项目中用 d3 画的 heatmap 想把横坐标的一组 text 旋转 45deg ... 遇到的问题:
设置transform会让x轴的text整体都旋转 而不是每个都旋转...解决办法: 让每个text旋转的起点为相应的x起点,而不是最左边的起始点代码如下:var timeLabels = svg.selectAll(".testLabel")
一.代码示例
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang=&quot;zh-cn&quot;&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
相信大家都知道在SVG中添加文本是使用text元素。但这个元素不能够自动换行,超出的部分就显示不出来了,怎么办呢?下面通过这篇文章来给大家详细介绍下实现的过程。
一、文字换行是什么问题?
现有一字符串:
var str = "云中谁寄锦书来,雁字回时,月满西楼";
李清照的一剪梅,读过吗?
在body里添加一个svg元素,大小如下:
var links = [
{source: "Microsoft", target: "Amazon", type: "licensing" ,weight:1,color:1},
{source: "Microsoft", target: "HTC", type: "licensing" ,weight:3,color:4},
在 ag-grid 中使用 Vue,可以使用 `cellStyle` 和 `cellClass` 属性来
设置单元格的
样式。
`cellStyle` 可以用来
设置单元格的
内联样式,可以使用 JavaScript 对象来定义
样式。
<ag-grid-vue
:columnDefs="columnDefs"
:rowData="rowData"
:gridOptions="gridOptions">
</ag-grid-vue>
data() {
return {
columnDefs: [
{headerName: 'Name', field: 'name', cellStyle: {'background-color': 'red'}},
rowData: [
{name: 'John Smith'},
gridOptions: {},
`cellClass` 则可以用来指定单元格使用哪个 CSS 类,可以是一个字符串或者一个返回字符串的函数。
<ag-grid-vue
:columnDefs="columnDefs"
:rowData="rowData"
:gridOptions="gridOptions">
</ag-grid-vue>
data() {
return {
columnDefs: [
{headerName: 'Name', field: 'name', cellClass: 'my-cell-class'},
rowData: [
{name: 'John Smith'},
gridOptions: {},
在 css中:
.my-cell-class {
background-color: red;
也可以使用函数来返回一个字符串来实现动态类的添加
cellClass: function(params) {
if (params.value === "type1") {
return "type1";
} else if (params.value === "type2") {
return "type2";
} else {
return null;
这些配置可以在行内单元格级别来使用也可以在列级别使用
m0_46900715: