- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经设法使 d3.js 线+面积图与焦点/上下文刷和平移/缩放同步,这里有一个小例子:
我无法将平移限制在原始域边界处停止,同时还可以很好地使用画笔。这是为了防止用户在他们的 View 中丢失图形。
虽然我尝试手动检测平移何时超出边界,然后设置 zoom.translate([0,0]),例如在这些示例中: d3.js scatter plot - zoom/drag boundaries, zoom buttons, reset zoom, calculate median Limiting domain when zooming or panning in D3.js d3.js scatter plot - zoom/drag boundaries, zoom buttons, reset zoom, calculate median
...正如我在第 183 行所做的那样:
//If exceed original domain, limit panning by resetting translate
if (x.domain()[0] < x0.domain()[0]) {
zoom.translate([0, 0]);
}
问题发生在:1)在small context graph中创建画笔区域2) 将大焦点图一直平移到最早的日期3) 平移快到边界时图形跳动
如果有任何帮助可以防止发生跳跃,或者是否有任何其他方法可以将平移(以及最终缩小)限制到原始域边界,我们将不胜感激。
关于限制缩小,设置:
var zoom = d3.behavior.zoom().x(x).scaleExtent([1,10]).on("zoom", zoomed);
...效果不佳,因为缩小将仅限于画笔区域,而不是图形数据的整个范围。
非常感谢!
最佳答案
我在结合 D3 Brushing 和 Zoom & Pan 时遇到了类似的问题,但最终解决了。我发现限制平移的关键是重置缩放行为对象的平移。具体来说,这是我的缩放回调函数:
function zoomed() {
var t = d3.event.translate;
var s = d3.event.scale;
var size = width*s;
t[0] = Math.min(t[0], 0);
t[0] = Math.max(t[0], width-size);
zoom.translate(t);
focus.select(".area").attr("d", area);
focus.select(".x.axis").call(xAxis);
var brushExtent = [x.invert(0), x.invert(width)];
context.select(".brush").call(brush.extent(brushExtent));
}
虽然不是您问题的一部分,但使整个演示正常工作的一个重要部分是在完成刷亮后更新缩放平移和缩放,所以这是我刷过的回调:
function brushed() {
x.domain(brush.empty() ? x2.domain() : brush.extent());
focus.select(".area").attr("d", area);
focus.select(".x.axis").call(xAxis);
var s = x.domain();
var s_orig = x2.domain();
var newS = (s_orig[1]-s_orig[0])/(s[1]-s[0]);
var t = (s[0]-s_orig[0])/(s_orig[1]-s_orig[0]);
var trans = width*newS*t;
zoom.scale(newS);
zoom.translate([-trans,0]);
}
这是一个基于 D3 示例之一的完整示例:http://bl.ocks.org/sbreslav/be9af0d809b49864b7d8
关于d3.js - Focus/Context Brushing + Pan/Zoom graph - 如何限制平移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19190170/
我正在尝试使用链接到 map 的 d3.js 创建垂直时间轴,以便画笔中包含的任何项目也将显示在 map 中。有点像http://code.google.com/p/timemap/但使用 d3 而不
我正在通过另一个类的反射检索画笔列表。我想确保此列表中的某些画笔不是透明的 (#00FFFFFF)。但是,将它与 Brushes.Transparent 进行比较会返回 false,即使该值实际上是
我有 2 个问题想用我当前基于 this 的 d3 应用程序修复: 这是 fiddle :http://jsfiddle.net/zoa5m20z/ 我想初始化我的笔刷,以便在应用程序启动时默认只刷一
我正在构建一个画笔应用程序,它快完成了,我所做的只是一个基本的画笔/绘图工具。我想给它一种更像画笔的感觉,因为在我当前的输出中它有角度并且看起来不像真正的画笔墨水。 这是我的代码: - (void)t
我正在尝试为文本框添加水印。 TextBox.Background 是一个 System.Windows.Media.Brush。我需要 Graphics.FillRectangle(System.D
如何将 System.Windows.Media.Brush 转换为 System.Drawing.Brush? 我正在尝试将 system.windows.media.brush 的颜色格式化为 S
如何或什么是最好的序列化方法 System.Windows.Media.Brush ? 最佳答案 这里有一个关于如何序列化 WPF 的很好的讨论: http://statestreetgang.net
我将IEnumerable用作ItemsSource的ComboBox遇到此问题;问题出在我(以编程方式)尝试设置SelectedItem时。这是描述问题的代码: private readonly L
docs直接进入使用“画笔”API 的详细信息,而无需描述“画笔”是什么。 当然,我可以根据该页面中给出的示例做出自己有根据的猜测,但我正在寻找有关“画笔”是什么的更正式的介绍。 (搜索“画笔”,甚至
我目前有以下方法 public void printTitle(string title){ // settings for stringformat g.DrawString(tit
我正在编写一个基于 Mike Bostocks 示例的 d3 小部件 http://bl.ocks.org/mbostock/1667367因此,我尝试使用预定义日期设置画笔范围,但范围矩形不适用于这
我有一个属性允许将已知颜色的字符串名称发送到我的控件。该属性只接受正确的已知颜色名称,如“红色”或“蓝色” private KnownColor _UseColor = KnownColor.Re
在 Paint 事件中使用新的 Brush 是不是更好的方法,即 protected override void OnPaint(PaintEventArgs e) { e.Graphics.
下面是康威生命游戏在 WPF 中的一个(非常幼稚的)实现。这只是一个演示... xaml: 代码隐藏: using System; usin
这个问题在这里已经有了答案: Convert string to Brushes/Brush color name in C# (10 个答案) 关闭 5 年前。 我有一个矩形,我想用一种颜色填充它
我需要将一些颜色(十六进制)转换为 Brush。 我需要在代码中做到这一点。 我该怎么做 ? 最佳答案 //this would be initialized somewhere else, I as
我花了大约一周的时间阅读所有关于 iPhone 绘图、动画和 OpenGL 的免费信息。使用可用的 iOS 绘图示例(例如 Apple 的 GLPaint 和 Quartz 示例应用程序),我编写了几
我一直在通过使用 Brush & Zoom 来学习 d3制作自定义时间线的示例。我希望能够允许用户保存时间线的“ View ”:缩放和平移到特定点,将它们保存到 JSON 中,然后稍后恢复它们。 任何
我想知道如何更好地控制我的 d3.brush 组件。我想对其进行一些额外的控制,例如: 右键单击(打开一个特殊菜单,而不是常规的浏览器菜单 - 也不是奇怪的画笔行为) 能够禁用可调整大小(即允许用户仅
Windows.Media.Brush 不是可序列化的类,所以我想知道如何序列化它。 我将 [Serializable] 属性放在类本身上,将 [DataContract] 和 [DataMember
我是一名优秀的程序员,十分优秀!