域名备案_西游降魔篇百度云_便宜的

安全 虚拟云 浏览

小编:最近我们公司提出了一个用例来显示三个数据值的散点图,但只有一个数值是数字。标准散点图要求X和Y值是度量值。沿Y轴放置尺寸将是一些自定义代码–这是Lumira扩展的一个很好的

最近我们公司提出了一个用例来显示三个数据值的散点图,但只有一个数值是数字。标准散点图要求X和Y值是度量值。沿Y轴放置尺寸将是一些自定义代码–这是Lumira扩展的一个很好的用例。

需求文档显示,我们的用户希望位置垂直显示在左侧("Y轴")与英里之间在X轴上。每个位置可以有两个或多个点。这些点应按类别进行标记和颜色编码。水平网格线清楚地表明了哪些点属于每个位置。

首先,我的第一个想法是从Lumira示例中获取预先制作的散点图并进行扩展…但不幸的是,云数据库库中,我们没有得到基本的图表开始。相反,我们将从Mike Bostock的D3散点图开始,并将其转换为分机。我们将Mike的数据集保存为CSV并加载到Vizpacker中:

一旦我们有了数据,我们就使用render()函数体中相同URL的代码。我们需要一维和两个度量,因此我们在代码中使用标准Lumira名称:

var dsets=数据元维度(),

毫秒=数据元度量();

var mset1=数据元度量(0);

var ms1=mset1[0];

var ms2=mset1[1];

我们可以省略加载函数d3.tsv。如果原始的列名硬编码为"d.sepalLength"和"d.sepallewidth",我们将其替换为d[ms1]和d[ms2]。再进行一些调整,我们有一个工作的Lumira散点图,看起来就像原来在左边:

这个扩展的.profile文件附在这个博客文章,并将提交到GitHub上的Lumira可视化项目。这将为下一个扩展散点图的人提供一个良好的开端。

从这一点开始,速度云服务器,现在我们要完成自定义图表的要求。这次我们将有三个维度和一个度量。它们不是给维度编号,而是为可维护性命名。我们不使用ms2,但暂时不使用它会很有帮助,这样我们就可以看到我们的更改,而不会出现代码错误。

//横轴的单个度量值

var mset1=数据元度量(0);

var ms1=mset1[0];

var ms2=mset1[0];//这就是我们工作时出现的问题,因此不会出现javascript错误

//y轴、点标签和颜色/图例的三个度量值

var dset1=数据元维度(0);

var ds_yAxis=dset1[0];

var ds_label=dset1[1];

var ds_color=dset1[2];

我们的Y轴将是文本–一个位置(城市)列表。由于数据中每个位置都有多个值,因此我们需要一个轴数据集的重复列表。我们将创建数组yAxisValues。

yAxisValues=[];

数据.forEach(函数(d){

维数=d[ds_yAxis];

if(!dimensionValue){dimensionValue=""};

如果(yAxisValues.indexOf(维度值)==-1{

yaxis值。推送(维度值);

}

});

yAxisValues.sort文件();

现在我们将图表的y轴替换为包含文本值的新y轴。记号数是数组的大小,勾号格式是数组值,这给了我们左边的位置名称。由于ms2黑客攻击,我们的数据点现在都在x=y位置。

var yaxisleet=d3。svg.axis轴()

。刻度(y)

。记号大小(0)

。记号(Yaxis.长度)

.tickFormat(函数(d,i){返回值[i];})

.orient("左");

为了让所有的线都穿过,我们让刻度线延伸整个图表的宽度。我找不到一个方法把刻度线放在里面,标签放在外面。我尝试了双Y轴,得到了这个外观,结果是非常可读,非常适合我们的用例-我很幸运!

下面是添加次轴的代码。我们将刻度大小设置为图表的全宽。

var yAxisRight=d3。svg.axis轴()

。比例(y)

。记号大小(打印宽度,数据存储过程,0)

。记号(Yaxis.长度)

.tickFormat(函数(d,i){返回值[i];})

.orient("right");

可视附加("g")

.attr("类","y轴")

。调用(yAxisRight)

在CSS中需要一个深灰色的线条:

。轴线{

形状呈现:crispEdges;

笔划:#AAA;

}

所以我们已经完成了y轴位置数据的添加,并创建了水平网格。现在我们可以将数据放在上面。在原始散点图中,数据由cx和cy属性定位:

.attr("cx",function(d){return x(d[ms1]);})

.attr("cy",function(d){return y(d[ms2]);})

我们希望使用位置名称作为y轴值。因此,我们得到要绘制的点的位置名称(城市)–d[ds\u yAxis]–然后使用yAxisValues.indexOf()。我们将此值传递给y函数,点将出现在其位置名称的y坐标处。

.attr("cx",函数(d){返回x(d[ms1]);})

.attr("cy",函数(d){返回y(yAxisValues.indexOf(d[dsèyAxis]);})

但是首先我们要记住设置y轴输入域,它最初依赖于输入数据集及其度量:

y.domain(d3.extent(data,function(d){return d[ms2];})).nice();

现在我们将其切换为使用Y轴值的重复数据消除数组。

Y.domain(d3.extent(yAxisValues,function(d,i){return i;})).nice();

这就完成了图表中的下一个要求–我们现在用文本Y轴和数字X轴绘制数据。

要按颜色类别给点上色,我们将它从维度样本数据更改为前面设置的命名维度:

.style("fill",function(d){return color(d[ds1]);});

.style("fill",function(d){return color(d[ds\u color]);})

D3为我们做了其余的事情。它甚至改变了图例。

当前网址:http://vmchk.cooou.com/secaidapei/2021/0928/104975.html

 
你可能喜欢的: