D3.js具有“11 PM”值的时间刻度怪癖
D3.js time scale quirk with "11 PM" values
在使用d3.time.scale()
时,我看到了一些关于刻度线格式的有趣行为。
当从几个月放大到几天时,有时我会在轴中得到%H %p
日期格式(例如,呈现"11 PM",不显示日期。这呈现如下:
周三 11 |周五 13 |晚上 11 点 |晚上 11 点 |晚上 11 点 ...
我使用的数据集具有日粒度,没有时间信息。我本来希望%a %d
(这将使周六 15 岁)。实际上,某些刻度线确实显示了正确的格式,而其他刻度线则没有。
有没有办法避免这种怪癖?
至少,我能够在迈克·博斯托克(Mike Bostock)的这两个块中看到这种怪癖:可缩放区域,或通过刷牙的焦点+上下文。
我在线程"d3js:时间缩放和"1901"中看到可以将tickFormat
属性添加到轴上,从而覆盖正常格式。这里的问题是我想保留缩放格式(从几年到几天)。我不确定如何传递tickFormat
格式列表,甚至在某些情况下只覆盖格式。
出现此问题的原因是,用于分析日期的时区和浏览器中设置的时区不同。有关问题和解决方案的说明,请参阅此页面。
正如@Lars Kotthoff指出的那样,这是一个时区问题。我使用的数据没有时区信息也没有时间信息(例如"15-Aug-2000"),并且错误出现在 DST 期间的更改日期。
为了纠正这个问题,就我而言,我将 x 刻度从:
d3.time.scale()
, 至
d3.time.scale.utc()
.
此更改(如 Lars 评论中提供的链接中所建议的那样)似乎已经解决了这个问题。
相关文章:
- 具有树状布局,如何更改X轴以使用D3中的时间刻度
- D3.js具有“11 PM”值的时间刻度怪癖
- D3 十年时间刻度刻度,数据格式为年
- d3时间刻度x轴,带有unix时间戳
- 如何在d3.js中显示年时间刻度上的最小日刻度
- 为什么 d3 时间刻度只显示我 00:00
- 我需要验证时间 AM|PM 的格式
- 使用时间刻度的 D3 轴,如何均匀地间隔宽阔的时间间隙
- D3 时间刻度将前后时间范围添加时间间隔的百分比
- 带有时间刻度的 D3 直方图
- d3时间刻度设置初始缩放级别和域
- 在x轴和带时间刻度的直线之间添加空格
- 如何在d3js中设置笔刷范围,同时使用时间刻度
- d3.js:从时间刻度中获取刻度格式
- D3.js时间刻度刻度-仅限年和月-自定义时间格式
- csv数据的X轴时间刻度
- JQPlot-去掉时间刻度
- D3/SVG:如何通过修改范围来调整带有时间刻度的D3.SVG.axis的大小
- D3时间刻度-刻度(计数)会产生错误,省略刻度(计数(count))不会产生错误
- 将圆的最左边与x轴时间刻度对齐