كيف يمكنني تحديد الحد الأقصى لعدد علامات التجزئة في محور d3.svg

StackOverflow https://stackoverflow.com//questions/11654836

  •  11-12-2019
  •  | 
  •  

سؤال

لدي مشكلة أن التسميات الخاصة بي d3.svg.axis متداخلة في بعض الأحيان.لذلك أود تقليل الحد الأقصى لعدد العلامات والعلامات إلى مبلغ معين.

لا أستطيع أن أجد حلا في ما يبدو وثائق واجهة برمجة التطبيقات.

لا أستطيع استخدام axis.tickValues() لأن النطاق ديناميكي ويمكن أن يمتد من عدة ساعات إلى عدة سنوات.

لقد حاولت استخدام axis.ticks(9) ولكن لا يبدو أن لها تأثير.يمكنك إلقاء نظرة على مثال على bl.ocks.org/3181719.

هل كانت مفيدة؟

المحلول

واحد من هذين يجب أن يفعل ذلك نيابة عنك.فقط حدد axis.ticks(10) لتحديد عدد علامات التجزئة أو axis.tickValues([1,2,4]) لتحديد علامات التجزئة الفعلية التي يجب أن تظهر.

نظرًا لأنك تستخدم التواريخ، فسوف تحتاج إلى القيام بشيء مثل هذا:

 .ticks(d3.time.weeks, 2)

يمكنك قراءة المزيد عن الفترات الزمنية في https://github.com/mbostock/d3/wiki/Time-Intervals.يمكنك رؤية مثال حول كيفية القيام بذلك في http://bl.ocks.org/1962173 لتحديث علامات التجزئة بناءً على طول الفترة الزمنية المعروضة.

if ((maxExtent - minExtent) > 1468800000) {
    x1DateAxis.ticks(d3.time.mondays, 1).tickFormat(d3.time.format('%a %d'))
    x1MonthAxis.ticks(d3.time.mondays, 1).tickFormat(d3.time.format('%b - Week %W'))        
}
else if ((maxExtent - minExtent) > 172800000) {
    x1DateAxis.ticks(d3.time.days, 1).tickFormat(d3.time.format('%a %d'))
    x1MonthAxis.ticks(d3.time.mondays, 1).tickFormat(d3.time.format('%b - Week %W'))
}
else {
    x1DateAxis.ticks(d3.time.hours, 4).tickFormat(d3.time.format('%I %p'))
    x1MonthAxis.ticks(d3.time.days, 1).tickFormat(d3.time.format('%b %e'))
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top