Bir şekilde D3 güç düzeni bir grafik yakınlaştırmak için var mı?
D3 sahip bir güç düzeni here yönlendirilmiş. Bir şekilde bu grafik yakınlaştırma eklemek var mı? Şu anda, fare tekerleği olay yakalama şansım oldu ama gerçekten kendini yeniden düzenleme işlevi yazmak nasıl emin değilim. Herhangi bir öneriniz var mı?
var vis = d3.select("#graph")
.append("svg:svg")
.call(d3.behavior.zoom().on("zoom", redraw)) // <-- redraw function
.attr("width", w)
.attr("height", h);
CEVAP
Güncelleme 6/4/14
Ayrıca Bkz: 14* *D3 v. 3 related example değişiklikler için. Bu muhtemelen aşağıda cevabını yerini alır bence.
Güncelleme 2/18/2014
Eğer tüm SVG pan ve zoom istiyorsan @ahaarnos cevabı tercih olduğunu düşünüyorum. Benim cevabım g
iç içe geçmiş unsurlar aşağıda olmayan yakınlaştırma aynı SVG elemanları (orijinal bir durum sözkonusu değil) gerçekten sadece gerekli. Eğeryapıng
bir eleman için davranış uygulamak, rect
veya benzeri bir arka plan öğesi g
işaretçi olaylar almasını sağlamak için gereklidir.
Orijinal Cevap
Bu çalışma zoom-pan-transform örnek dayalı var - benim jsFiddle burada görebilirsiniz: http://jsfiddle.net/nrabinowitz/QMKm3/
Biraz daha karmaşık olmasını umduğunu - yuva birkaç g
elementler, elde etmek için çalışmak, set SVG pointer-events
nitelik all
, ve sonra eklemek bir arka plan dikdörtgen almak için işaretçi olaylar (aksi takdirde, sadece çalışırken işaretçi üzerinde bir düğüm ya da bağlantı). redraw
fonksiyonu nispeten basit, sadece içteki dönüştürme ayarı g
:
var vis = d3.select("#chart")
.append("svg:svg")
.attr("width", w)
.attr("height", h)
.attr("pointer-events", "all")
.append('svg:g')
.call(d3.behavior.zoom().on("zoom", redraw))
.append('svg:g');
vis.append('svg:rect')
.attr('width', w)
.attr('height', h)
.attr('fill', 'white');
function redraw() {
console.log("here", d3.event.translate, d3.event.scale);
vis.attr("transform",
"translate(" d3.event.translate ")"
" scale(" d3.event.scale ")");
}
Bu etkili bir şekilde tüm SVG ölçekler, vuruş genişliği de, bir görüntü üzerinde yakınlaştırma gibi ölçekler.
Benzer bir tekniği gösteren example başka bir var.
Bir şekilde böyle büyük mükafat 4 düze...
'in ne grafik için en iyi araç bi...
Ön işlemci makroları yokluğunda, bir ş...
En iyi yapmak için olmayan-titrek, par...
Bir şekilde Android üzerinde Python ça...