繁体   English   中英

即使我将刻度间隔设置为每7天,为什么我的d3图表的x轴将每个月的第一天都作为刻度显示?

Why does my d3 chart's x-axis include the first of every month as a tick even though I set the tick interval to every 7 days?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我是d3的新手,但是我已经使用d3.timeDay.every(7) x轴的刻度间隔设置为每7天一次。 但是,在创建图形时,我还会看到每个月的第一天添加了一个勾号。 例如,即使11/1不是在10/29之后的7天, 我的图形也会在10 / 1、10 / 8、10 / 15、10 / 22、10 / 29和11/1处显示刻度。 如果我将此范围扩展到包括多个月,则每个月的第一天都会出现一个勾号。

我在下面包含了该轴的代码。 是什么导致每月的第一天显示为刻度?

  const xScale = d3.scaleTime().range([0, innerWidth]);
  const tickAmount = d3.timeDay.every(7);

  chart.append("g")
    .classed('x-axis', true)
    .attr("transform", "translate(0," + innerHeight + ")")
    .call(d3.axisBottom(xScale)
    .ticks(tickAmount)
    .tickSize(-innerHeight)
    .tickFormat(d3.timeFormat('%m/%d/%y')));
1 个回复

尝试const tickAmount = d3.timeWeek.every(1); 代替:

请注意,对于某些时间间隔,结果日期可能不会均匀地间隔开; d3.timeDay的父间隔是d3.timeMonth,因此间隔号在每个月初重置。 如果step无效,则返回null。 如果step为1,则返回此间隔。 来自d3文档

如果 .tickFormat(function(d, i) { return d; })您还可以使用 .tickFormat(function(d, i) { return d; })从显示中过滤掉给定的刻度(例如,排除第一个刻度: return i>0 ? d : '' ),尽管这样做更多骇客。

从d3问题跟踪器中找到了一种更好的方法:

d3.axisBottom(x)
  .ticks(d3.timeDay.filter(d=>d3.timeDay.count(0, d) % N === 0))
  .tickFormat(d3.timeFormat('%m/%d/%y'))
  .tickSizeOuter(0)

这将使您在第N天获得一致的滴答声,而无需重复数月。 刻度线的存在并不意味着该数据集中在该日期存在一个点,而是可以在日期范围内正确缩放它们。

这是一个演示: https : //beta.observablehq.com/@thmsdnnr/d3-ticks-every-7-or-10-days

1 每个月的第一天

如果我从当前日期开始,我怎样才能获得每个月的第一个星期五? 我正在考虑使用$ date-> get(Zend :: WEEKDAY)并将其与星期五进行比较,然后与DAY进行比较并检查它是否小于或等于7.然后在其上添加1个月。 必须有更简单的东西? ...

2 每月第一天

只有当loanservicing.as_of_date 发生在当月的最后一天时,以上才会提供数据。 上个月(2020 年 5 月 31 日)这个月的最后一天是星期日。 有没有办法得到一个月的第一天,如果这个特定的日期发生在当月的第一天和最后一天之间,显示日期? 周日基本上没有活动,所以数据被遗漏了 ...

3 如何获取FullCalendar上显示的每月第一天到最后一天的事件?

我有自己的 function 来获取事件,但我的 function 会同时获取所有事件,因此需要很长时间。 我只想从显示的每个月中获取事件,因此获取数据不需要很长时间。 但是我不知道如何获取时间范围,因为我自定义了自己的功能。 我需要帮助:) 这是我的 function: 我假设我们可以设置参数s ...

5 在每个月的第一天运行功能

我想在每个月的第一天的固定时间(比如说上午8点)从我的Android应用程序运行一个功能。 根据用户的喜好,该功能将提供通知或开始通过Internet下载文件(两者均已处理)或不执行任何操作。 我尝试将BroadcastReceiver与动作android.intent.action.D ...

6 ICS RRULE 适用于每个月的第一天,周末除外

您能否为以下场景指定 RRULE? 每月的第一天每月重复一次。 除了,如果它落在星期日,则在第二天(每月 2 日的星期一)重复发生。 除了,如果它落在星期五,则在前一天(上个月的最后一个星期五)重复出现。 这只是一个练习,看看什么是可能的,以及如何解决各种问题。 我尝试使用 3 个单独的 RR ...

7 在每个月的第一天删除Cookie

是否可以在每个月的第一天删除cookie,而不是等待cookie手动过期? 这样一来,我每月可以向用户显示一条消息,而不管他们浏览该网站多少次。 我正在使用js-cookie。 ...

8 每个月的第一天开发一个自动缩放的图表[关闭]

我正在使用excel-vba工具并尝试按以下方式自定义它 - 我有下面链接的图表。 所有的特征(颜色,酒吧......)都很好。 (用户在另一个表中输入日期。)但是:横轴应该在每个月的第一天开始。 此模板应适合所有类型的项目 - 无论是6个月的时间框架还是3年。 应该 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM