D3.js 如何允许d3js绘图在屏幕外运行
以Mike Bostocks为例,我创建了一个线条图来显示数据,并在下面绘制了一个图标图,以引起对图形中元素的注意。显示结果和相关代码的是: [注:为了演示,我在这里为每个数据点添加了一个图像,生产中可能不是这样] 我的想法是,解决方案与获得正确的水平缩放有关,但我尝试了许多线性和顺序缩放和转换的变化,而不是更新基础数据,以使这项工作没有成功 我的问题是:D3.js 如何允许d3js绘图在屏幕外运行,d3.js,D3.js,以Mike Bostocks为例,我创建了一个线条图来显示数据,并在下面绘制了一个图标图,以引起对图形中元素的注意。显示结果和相关代码的是: [注:为了演示,我在这里为每个数据点添加了一个图像,生产中可能不是这样] 我的想法是,解决方案与获得正确的水平缩放有关,但我尝试了许多线性和顺序缩放和转换的变化,而不是更新基础数据,以使这项工作没有成功 我的问题是: 如何允许图形和图标从屏幕上消失 如何使图标彼此接触,而不是保持它们之间的间隙 我的代码不同之处在于我不想 删除屏幕外数据,因为我的用户将前后
var xScale = d3.scale.linear()
.domain([0, data.length - 1])
.range([0, (data.length - 1) * settings.iconWidth]);
这有双重效果:
下面是要使绘图延伸到SVG的边界之外,您需要做的就是调整正在使用的缩放范围。例如,您的x比例设置为
var xScale = d3.scale.linear()
.domain([0, data.length - 1])
.range([0, settings.containerWidth - 16]);
该范围确定在SVG上绘制对象的位置,并且当前仅限于SVG的宽度。若要使其超出此范围,请将其更改为例如
var xScale = d3.scale.linear()
.domain([0, data.length - 1])
.range([0, 2 * settings.containerWidth - 16]);
这将使x比例覆盖实际SVG宽度的两倍——也就是说,图形的一半是可见的,而另一半是“屏幕外的”
完成演示。不确定“屏幕外”是什么意思。要在SVG的边界之外绘制,请相应地调整缩放范围,请参见@LarsKotthoff,就是这样。你是对的,我的意思是在SVG之外,我将使用剪辑路径来掩盖图形中的那些“屏幕外”部分。我还通过调整相同的范围来回答图标间距问题。我将为任何寻找最终代码的人更新问题。谢谢你的帮助。你能添加你的评论作为答案吗?我会将其标记为正确答案?
var xScale = d3.scale.linear()
.domain([0, data.length - 1])
.range([0, 2 * settings.containerWidth - 16]);