मैंने पंक्तियों के बीच बार, लेबल और कनेक्शन के साथ ग्राफिक रूप से कुछ पंक्ति-उन्मुख डेटा प्रदर्शित करने के लिए एक स्क्रिप्ट लिखी है। चूंकि डेटासेट बढ़ गया है, परिणामी एसवीजी तत्व स्क्रीन के आकार से अधिक हो गया है। परिणाम को एक स्क्रीन पर रखने के लिए (आंशिक रूप से उपयोगकर्ता को प्रबंधित करने के लिए डी 3 ज़ूम व्यवहार को आसान बनाने के लिए), मैंने ड्राइंग से पहले एसवीजी तत्व को स्केल कर दिया है ताकि यह स्क्रीन पर फिट हो सके। मैंने एसवीजी तत्व में एक ट्रांसफॉर्म/स्केल विशेषता को जोड़कर ऐसा किया।मैं डी 3 में प्रारंभिक ज़ूम स्तर कैसे निर्दिष्ट करूं?
समस्या यह है कि, d3 का व्यवहार। ज़ूम पैमाने पर इस परिवर्तन के बारे में नहीं जानता है, इसलिए जब मैं ज़ूम करना शुरू करता हूं, तो यह पहले स्केल को रीसेट करता है। क्या डी 3 के व्यवहार में प्रारंभिक पैमाने को बदलने का कोई तरीका है। ज़ूम ?
संपादित करें: जोड़ा एक काम के आसपास
kludged इस redraw() फ़ंक्शन में प्रारंभिक पैमाने द्वारा d3.event.scale गुणा करके। तो, एसवीजी तत्व की प्रारंभिक घोषणा
var SVG = d3.select('#timeline')
.append('svg:svg')
.attr('class','chart')
.attr('transform','scale('+bscale+')')
.attr('width', wwidth)
.attr('height', wheight)
.call(d3.behavior.zoom()
.extent([[0,Infinity],[0,Infinity],[0,Infinity]])
.on('zoom', redraw));
और
function redraw() {
SVG.attr("transform",
"translate(" + d3.event.translate + ")"
+ "scale(" + d3.event.scale * bscale + ")");
};
दुर्भाग्य से, डी 3 एपीआई [https://github.com/mbostock/d3/wiki/API- संदर्भ] के लिए इसके लिए कोई पृष्ठ नहीं है। क्या कोई उदाहरण ऑनलाइन है जो ज़ूम() को उपयोग में दिखाता है? – August
यह पाया गया: https://github.com/mbostock/d3/pull/488 – August
'currentScale' क्या होना चाहिए? – vsync