كيف يمكنني تحديد الحد الأقصى لعدد علامات التجزئة في محور d3.svg
-
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'))
}