javascript - 使用 D3.js 绘制颜色代码 LineString

标签 javascript d3.js

如何根据从 CSV 文件中读取的唯一值对代码行字符串进行颜色着色?我希望根据从 CSV 文件读取的每一行生成具有不同颜色的行字符串。

for(var i=0, len=data.length-1; i<len; i++){
        // (note: loop until length - 1 since we're getting the next
        //  item with i+1)

        links.push({
            type: "LineString",
            coordinates: [
                [ data[i].OperatorOwnerLon, data[i].OperatorOwnerLat ],
                [ data[i].CountryOfContractorLon, data[i].CountryOfContractorLat ],
                [ data[i].lon, data[i].lat ]
            ]
        })

最佳答案

d3.js没有任何 native 显示功能。它依赖于 HTML、CSS、SVG、Canvas 或您选择的任何其他显示技术。由于您正在处理文本行,因此 HTML 和 CSS 就足够了。

您没有说明如何将纬度/经度坐标转换为颜色,因此我将选择一个更简单的示例,使用城市名称。假设 CSV 为:

City,Country,Population
Shanghai,China,24256800
Karachi,Pakistan,23500000
Beijing,China,21516000
São Paulo,Brazil,11895893

假设您的 HTML 有一个 div 您想要在其中放置文本:

<div id='cities'></div>

首先,您可能应该定义一个函数来根据每行数据选择颜色。我将使用标准配色方案。然后循环遍历数据,添加彩色线条:

var cities = d3.select('#cities');
var colorPick = d3.scaleOrdinal(d3.schemeCategory10);

data.forEach(d => {
  cities.append('p')
        .style('color', colorPick(d.City))
        .text(d.City + ', ' + d.Country);
});

这就是它的核心。与a little more prettification ,结果如下:

这是一个简单的“第一个获得第一种颜色,第二个获得第二种颜色,...”的着色方案。它对很多事情都很有效。

关于javascript - 使用 D3.js 绘制颜色代码 LineString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40767709/

相关文章:

javascript - Google Charts 线条粗细(和清晰度)不同

d3.js - d3js v4 : Only show labels on x-axis

d3.js - 在具有缩放事件的 <g> 内的两个元素之间放置一条线?

javascript - Dynamics CRM 中 clientglobalcontext.js.aspx 的确切用途是什么?

javascript - 下拉菜单被 chop

Javascript trimAll() 似乎不起作用

javascript - 在 d3 中选择子节点的定位

javascript - 防止 svg 组重叠(D3 js v4)

javascript - 在 D3 中选择和移动导入的 SVG 文件

javascript - 修改正则表达式以允许其他 url