2014-06-10 29 views
5

Ben pan işlevselliği ile temel bir doğrusal grafik üzerinde çalışıyorum. d3.js: sınırları ile tava

I grafik elementleri d3.event.translate sınır değerleri ile sürüklenebilir ne ölçüde sınırlamak için yönetilen:

var tx = Math.max(0, d3.event.translate[0]), 
    ty = Math.min(0, d3.event.translate[1]); 

Şimdi gereken, x sınırlamak ve y buna göre eksenleri. Bkz. Örnek: http://jsfiddle.net/Q2SWV/

Grafikteki çubuklar, aşağı veya sola sürüklendiğinde 0 ile sınırlıdır. X ve y eksenleri değildir. Eksen probleminin nasıl düzeltileceği ile ilgili bir fikrin var mı?

cevap

5

Çok yakınsınız, ancak güncel çeviri koordinatlarınızla zoom davranışını güncellemenin son adımını kaçırıyorsunuz. Her iki eksen de zoom kullanılarak güncellendiği için bu sorununuzu çözecektir. tx ve ty belirledikten sonra aşağıdaki hakkını ekleyin:

zoom.translate([tx, ty]); 

Bu eksenlere sınırlarını geçerli olacaktır. Güncellenen bilgi için buraya bakınız: http://jsfiddle.net/mdml/nZD3E/.

+0

Bunun çok uzun zaman önce olduğunu biliyorum, ancak bu sadece 2 taraftaki sınırlara sahiptir, yani x [0], y [0], bunu her 4 taraftan nasıl yaparım? örneğin, sadece y yönünde 0 ve 100 arasında gidebilirim ve x ile aynı olabilir – thatOneGuy

+0

Bu örnek çalışmaz (daha yeni bir d3 sürümünün neden olup olmadığını bilmiyorum). – jarandaf