У меня есть график D3, где я хочу, чтобы ось имела отметки дня, времени (например, «20 января, 12:00»).Как иметь d3 tickFormat (день, время), но показывать только время, если день тот же?
Это достаточно легко, я просто:
xAxis.tickFormat(d3.time.format('%b %-d, %-I:%M%p'));
Это производит
- 20 января 12:00 утра
- 20 января, 12:00 вечера
- 21 января, 12: 00am
- 21 января, 12:00 pm
- и т.д.
Что бы я хотел, чтобы сделать это, когда день тот же, что и предыдущий тик, не показывайте день и просто покажите время. (В основном показывают только часть, которая отличается)
- 20 января 12:00 утра
- 12:00 вечера
- 21 янв, 12:00 утра
- 12:00 вечера
Это возможное? Насколько я могу сказать, обратный вызов, который вы предоставляете tickMormat, не получает значения, предоставленного предыдущей функции. Он дает вам текущее значение, индекс тика и некоторое третье число (не уверен, что это за)
Красивая, upvoted. Он работает так же, как только 'return timeFormatWithDate (d)' и 'return timeFormatWithoutDate (d)'. –
@GerardoFurtado ah yeah, я изначально решил это для d3 v4, а затем переписал для v3 после того, как OP использовал v3, а затем забыл очистить код. Вот реализация v4, если кому-то интересно: https://jsfiddle.net/Dogbert/gy5h364g/ – Dogbert
Небольшая коррекция здесь, вы хотите использовать 'd.getDate()', а не 'd.getDay()' –