D3.js 具有“晚上 11 点”值的时间刻度怪癖
D3.js time scale quirk with "11 PM" values
在使用 d3.time.scale()
时,我看到一些关于刻度线格式的有趣行为。
当从几个月放大到几天时,有时我将轴中的日期格式设为 %H %p
(例如呈现“晚上 11 点”,不显示日期。)呈现如下:
Wed 11 | Fri 13 | 11 PM | 11 PM | 11 PM ...
我使用的数据集有天粒度,没有时间信息。我本来希望 %a %d
(这将呈现周六 15)。实际上,一些刻度线确实显示了正确的格式,而另一些则没有。
有没有办法避免这种怪癖?
我至少在 Mike Bostock 的这两个区块中看到了这个怪癖:Zoomable Area, or Focus+Context via Brushing。
我在线程 "d3js: time scaling and “1901”" 中看到可以将 tickFormat
属性 添加到轴,从而覆盖正常格式。这里的问题是我想保留缩放格式(从几年到几天)。我不确定如何传递 tickFormat
格式列表,或者在某些情况下甚至只覆盖格式。
正如@Lars Kotthoff 指出的那样,是 时区问题。我使用的数据没有时区信息和时间信息(例如“15-Aug-2000”),并且错误出现在 DST 期间的更改日期。
为了更正这个问题,就我而言,我将 x 比例从:
d3.time.scale()
,至
d3.time.scale.utc()
.
此更改(如 link provided in Lars' comment 中所建议)似乎已解决问题。
出现这个问题是因为解析日期的时区和浏览器中设置的时区不同。有关问题和解决方案的说明,请参阅 this page。
在使用 d3.time.scale()
时,我看到一些关于刻度线格式的有趣行为。
当从几个月放大到几天时,有时我将轴中的日期格式设为 %H %p
(例如呈现“晚上 11 点”,不显示日期。)呈现如下:
Wed 11 | Fri 13 | 11 PM | 11 PM | 11 PM ...
我使用的数据集有天粒度,没有时间信息。我本来希望 %a %d
(这将呈现周六 15)。实际上,一些刻度线确实显示了正确的格式,而另一些则没有。
有没有办法避免这种怪癖?
我至少在 Mike Bostock 的这两个区块中看到了这个怪癖:Zoomable Area, or Focus+Context via Brushing。
我在线程 "d3js: time scaling and “1901”" 中看到可以将 tickFormat
属性 添加到轴,从而覆盖正常格式。这里的问题是我想保留缩放格式(从几年到几天)。我不确定如何传递 tickFormat
格式列表,或者在某些情况下甚至只覆盖格式。
正如@Lars Kotthoff 指出的那样,是 时区问题。我使用的数据没有时区信息和时间信息(例如“15-Aug-2000”),并且错误出现在 DST 期间的更改日期。
为了更正这个问题,就我而言,我将 x 比例从:
d3.time.scale()
,至
d3.time.scale.utc()
.
此更改(如 link provided in Lars' comment 中所建议)似乎已解决问题。
出现这个问题是因为解析日期的时区和浏览器中设置的时区不同。有关问题和解决方案的说明,请参阅 this page。