对于javascript–D3Leaflet,只有在可见时绘制(大数据可见)感兴趣的读者,本文将会是一篇不错的选择,并为您提供关于asp.net–当usercontrol变得可见时执行javascri
对于javascript – D3 Leaflet,只有在可见时绘制(大数据可见)感兴趣的读者,本文将会是一篇不错的选择,并为您提供关于asp.net – 当usercontrol变得可见时执行javascript、D3.js 6.0 稳定版发布,数据可视化 JavaScript 库、D3.js 7.0 正式发布,数据可视化 JavaScript 库、javascript – D3 Leaflet:d3.geo.path()重新采样的有用信息。
本文目录一览:- javascript – D3 Leaflet,只有在可见时绘制(大数据可见)
- asp.net – 当usercontrol变得可见时执行javascript
- D3.js 6.0 稳定版发布,数据可视化 JavaScript 库
- D3.js 7.0 正式发布,数据可视化 JavaScript 库
- javascript – D3 Leaflet:d3.geo.path()重新采样
javascript – D3 Leaflet,只有在可见时绘制(大数据可见)
因此,例如当我放大到像华盛顿州这样的区域时,99.9%的世界没有显示 – 是D3默认行为来绘制所有其他元素无论如何?
我的项目基于Mike Bostocks d3 + leaflet example.没有使用视口/视图属性 – 是否在其他地方完成?感谢您的输入.
解决方法
>绘制屏幕外的SVG DOM元素
正如@larsKotthoff所提到的那样,可能不值得担心这些,因为浏览器可能比你优化它们做得更好.
>处理将导致SVG DOM元素在屏幕上绘制的数据.
我认为这是你可以有所作为的地方.如果你有昂贵的数据操作/处理,那么处理不会显示的东西似乎是浪费周期.我能想到改善这种情况的唯一方法就是尽早确定某些事情是否会出现在屏幕之外.如果它将在屏幕外,则在进行任何进一步的数据处理时忽略它.
但是,在这些情况下,您需要一种方法来检测它何时进入视图或视图外,以及是否适当处理.这可能会导致一些额外的开销,这使得它不值得做.
您的个人情况将决定这对您的有效性,但如果您有一个具体的示例,那么此处的用户可能能够协助重新分解以帮助提高性能.
您还可以执行其他操作,例如重新考虑可视化,以便首先需要更少的元素.根据我的经验,在屏幕上有如此多的信息以至于可视化的价值已经减少之前,性能并不是真正的问题.删除无关信息可以提高性能并提高对可视化的理解.当然,这是我的特殊经历,肯定有些时候不适用.
asp.net – 当usercontrol变得可见时执行javascript
然后,它变得可见=真.
我想在代码隐藏中将此usercontrol设置为visible = true时执行一些 javascript.
我找到的唯一解决方案是使用ScriptManager.RegisterStartupScript
usercontrol的代码背后.
但我不喜欢在codeBehind中编写我的javascript.
usercontrol中的这个jQuery不起作用:
$(document).ready(function(){
警报( ‘试验’);
});
用户控件进入更新面板.
解决方法
D3.js 6.0 稳定版发布,数据可视化 JavaScript 库
D3(或者叫 D3.js)6.0 稳定版已发布,距上个大版本 5.0 更新已过去两年多。
主要变化
D3 6.0 引入了部分不向后兼容的变化。
d3-array 现在使用原生集合(Map and Set)来代替对象字典,并且支持接受任何可迭代项(for-of)而不仅仅是数组。d3.group 和 d3.rollup 目前是强大的新聚合函数,它们取代了 d3.nest,并且与 d3-hierarchy 和 d3-selection 形成良好的搭配使用。此外还有很多新的数组辅助工具,比如 d3.greatest、d3.quickselect 和 d3.fsum。
d3-selection 现在直接将事件传递给事件监听器,取代了 d3.event global,使 D3 与 vanilla JavaScript 和大多数其他框架保持一致。
d3-delaunay 取代了 d3-voronoi,极大地提高了性能和健壮性,它还支持快速搜索。此外还引入了新的 d3-geo-voronoi,适用于球形(地理)数据。
d3-random 得到了极大的扩展,并包含了一个用于种子随机性的快速线性同余生成器。
d3-chord 为和弦图提供了新的布局。
d3-scale 增加了一个新的 radial scale 类型。
......以及其他各种小的改进和新的改进例子。
d3-selection 使用新的事件管理器:
- d3.event → (event) 作为第一个参数传递给所有监听者 [details]
- d3.mouse, d3.touch, d3.touches, d3.clientPoint → d3.pointer [details]
d3-brush、d3-drag 和 d3-zoom 同样使用了新的事件管理器:
- brush.on 监视器现在可以接收事件 [details]
- drag.on 监视器现在可以接收事件 [details]
- zoom.on 监视器现在可以接收事件 [details]
d3-voronoi 已被弃用,并被 d3-delaunay 取代:
- d3.voronoi → d3.Delaunay [details]
d3-collection 已被弃用,其方法已被取代:
- d3.nest → d3.group and d3.rollup (from d3-array) [details]
- d3.map → Map [details]
- d3.set → Set [details]
- d3.keys → Object.keys [details]
- d3.values → Object.values [details]
- d3.entries → Object.entries [details]
d3-array 已移除两个方法:
- d3.histogram → d3.bin [details]
- d3.scan → d3.leastIndex [details]
d3-interpolate 的补充方法包含一个破坏兼容性的变更:
- d3.interpolateTransformCss 现在的输入更严格 [details]
d3-format 改变了其减号的显示方式:
- 负值的默认符号变成了 unicode 减号,而不是连字符减号[details]
最后,D3 放弃了对 Bower 的支持,现在只发布到 npm 和 GitHub。
D3 采用了 ES2015,因此现在需要一个支持 ES2015 的浏览器方可使用。对于旧的浏览器,必须自带解释器,详情查看迁移指南。
D3 是数据可视化领域重要的 JavaScript 可视化库,它将强大的可视化交互技术与数据驱动 DOM 方法结合起来, 让你可以充分使用现代浏览器的强大能力自由地对数据进行可视化,在学术界、专业团队中享有极大声誉。
D3 正如其名,Data Driven Documents 数据驱动文档,它与 G2 、Echarts 等不同,更加接近底层,直接操作 SVG 元素,拥有更大的自由度,几乎可以实现所有的 2D 设计需求,同时也带来了高学习曲线的成本。D3 长于可视化,但不止于可视化,还提供了数据处理、数据分析、DOM 操作等诸多功能。
D3.js 7.0 正式发布,数据可视化 JavaScript 库
D3(或者叫 D3.js)7.0 已正式发布。
从该版本起,D3 以 ESM 形式提供,因此会要求使用环境安装了 Node.js 12 或更高版本。关于此变化,详情查看 Sindre Sorhus’s FAQ。
此外,d3.bin 现在会忽略空值,d3.ascending 和 d3.descending 也不再考虑空值的可比性(null comparable)。
Ordinal scales 现在使用 InternMap 作为域。域的值通过 object.valueOf 强制转为原始值而不是通过 object.toString 强制转为字符串来实现唯一性。
类数组(如 NodeList)在 d3.selectAll 和 selection .selectAll 中会被转换为数组。
以上是 D3 v7 的一些破坏性变化,非破坏性变化如下:
- 新增 d3.mode
- 新增 d3.flatGroup 和 d3.flatRollup
- 新增 transition.selectChild
- 新增 transition.selectChildren
- 为 Delaunay triangulation 采用 robust predicates
- 修复 delaunay.voronoi 计算出的船体共线点的外心
- 允许 brush.move 和 brush.clear 接受可选事件
- 允许 selection.merge 进行转化
- 允许 selection.join 进行转换
- 为 d3.contourDensity 应用 linear binning
- 以更好的圆形刻度值生成 contours.thresholds
- 修复 axis.tickArguments 以接受可迭代对象
- 修复 axis.tickValues 以接受可迭代对象
- 在 brush.move 期间修复未定义事件
- 在必要时,将拖动事件侦听器修复为显式非被动
- 在必要时,将缩放事件侦听器修复为显式非被动
- 修复 d3-zoom 中的变量初始化错误
- 暴露 d3.ZoomTransform 构造函数
- 更新依赖项
详情查看 release note。
D3 是数据可视化领域重要的 JavaScript 可视化库,它将强大的可视化交互技术与数据驱动 DOM 方法结合起来, 让你可以充分使用现代浏览器的强大能力自由地对数据进行可视化,在学术界、专业团队中享有极大声誉。
D3 正如其名,Data Driven Documents 数据驱动文档,它与 G2 、Echarts 等不同,更加接近底层,直接操作 SVG 元素,拥有更大的自由度,几乎可以实现所有的 2D 设计需求,同时也带来了高学习曲线的成本。D3 长于可视化,但不止于可视化,还提供了数据处理、数据分析、DOM 操作等诸多功能。
javascript – D3 Leaflet:d3.geo.path()重新采样
我们改编了Mike Bostock最初的D3 Leaflet示例:
http://bost.ocks.org/mike/leaflet/
这样它就不会重新绘制Leaflet中每个缩放的所有路径.
我们的代码在这里:https://github.com/madeincluj/Leaflet.D3/blob/master/js/leaflet.d3.js
具体来说,从地理坐标到像素的投影在这里发生:
https://github.com/madeincluj/Leaflet.D3/blob/master/js/leaflet.d3.js#L30-L35
我们在第一次加载时绘制SVG路径,然后简单地缩放/转换SVG以匹配地图.
这很有效,除了一个问题:D3的路径重新采样,在第一个缩放级别看起来很棒,但是一旦开始放大,看起来会逐渐变得更加破碎.
有没有办法禁用重新采样?
至于为什么我们这样做:我们想要绘制很多形状(数千个)并在每个缩放上重绘它们都是不切实际的.
编辑
经过一番挖掘,似乎重新取样发生在这里:
function d3_geo_pathProjectStream(project) {
var resample = d3_geo_resample(function(x,y) {
return project([ x * d3_degrees,y * d3_degrees ]);
});
return function(stream) {
return d3_geo_projectionradians(resample(stream));
};
}
有没有办法跳过重采样步骤?
编辑2
真是个红鲱鱼!我们在将原始函数发送到d3.geo.path().projection和d3.geo.transform对象之间来回切换,但无济于事.
但事实上问题在于传单的latLngToLayerPoint,它(显然!)围绕point.x& point.y to integers.这意味着初始化SVG渲染时缩小的越多,丢失的精度就越高.
解决方案是使用这样的自定义函数:
function latLngToPoint(latlng) {
return map.project(latlng)._subtract(map.getPixelOrigin());
};
var t = d3.geo.transform({
point: function(x,y) {
var point = latLngToPoint(new L.LatLng(y,x));
return this.stream.point(point.x,point.y);
}
});
this.path = d3.geo.path().projection(t);
它类似于传单自己的latLngToLayerPoint,但没有舍入. (注意map.getPixelOrigin()也是舍入的,所以你可能需要重写它)
你每天都学到一些东西,不是吗.
新实现如下所示:
var transform = d3.geo.transform({point: projectPoint}),path = d3.geo.path().projection(transform);
function projectPoint(x,y) {
var point = map.latLngToLayerPoint(new L.LatLng(y,x));
this.stream.point(point.x,point.y);
}
和以前一样,您可以继续将原始投影函数传递给d3.geo.path,但您将自动获得自适应重采样和反默认切割.因此,要禁用这些功能,您需要定义custom projection,而d3.geo.transform是一种简单的方法,可以为简单的基于点的转换执行此操作.
今天的关于javascript – D3 Leaflet,只有在可见时绘制(大数据可见)的分享已经结束,谢谢您的关注,如果想了解更多关于asp.net – 当usercontrol变得可见时执行javascript、D3.js 6.0 稳定版发布,数据可视化 JavaScript 库、D3.js 7.0 正式发布,数据可视化 JavaScript 库、javascript – D3 Leaflet:d3.geo.path()重新采样的相关知识,请在本站进行查询。
本文标签: