1. 11 Apr, 2014 1 commit
• Optimise d3.mean. · c0e84e2c
Jason Davies authored
```Originally we were using Welford’s algorithm, but this is primarily
useful when computing the variance in a numerically stable manner, since
Welford’s approach requires an incremental mean.

I’ve removed a test for the mean of more than one instance of
Number.MAX_VALUE as this is unlikely to occur in practice; most likely
this was the reason I used Welford’s algorithm in the first place.

There’s a paper [1] comparing various algorithms for computing the mean,
and Welford’s is actually slightly less accurate than the naïve
approach.  There are some more accurate approaches but I think it’s
overkill for d3.mean.

[1] Youngs, Edward A., and Elliot M. Cramer. "Some results relevant to
choice of sum and sum-of-product algorithms." Technometrics 13.3 (1971):
657-665.

Related: #1842.```
2. 10 Apr, 2014 1 commit
3. 08 Apr, 2014 2 commits
4. 06 Apr, 2014 4 commits
5. 04 Apr, 2014 1 commit
6. 24 Mar, 2014 23 commits
• Merge branch '3.4.4' · fa55eead
Mike Bostock authored
• Test for interpolate to null. · 994235b3
Mike Bostock authored
```I’m not entirely sure this is the most useful behavior, but since typeof null is
"object" and +null is 0, interpolating to null is equivalent to interpolating to
the number zero.```
• Save a few bytes. · d3bbf394
Mike Bostock authored
• Preserve tick ordering when updating axis. · abbe1c75
Mike Bostock authored
`Fixes #1748.`
• Getter support for transition.{delay,duration}. · b86e4e4a
Mike Bostock authored
`Fixes #1773.`
• Default to suitable precision. · 28538c40
Mike Bostock authored
`The point of this method is to pick the right precision for you!`
• More standard precision interpretation. · fe797df4
Mike Bostock authored
```Rather than overload the meaning of precision to bias the selection of the SI
prefix, always use the standard SI prefix, and use the precision in the same
sense as with fixed digits: the number of digits after the decimal point.```
• Consistent SI-prefix for small numbers. · 621558c2
Mike Bostock authored
```For reasons that I can’t recall, the SI-prefix behavior was different for small
numbers (between -1 and 1) than it was for large numbers. This commit enforces
consistent behavior, so that the coefficient is always in the range [1, 1000),
like in engineering notation.

For example, the old d3.format("s") would display 0.01 as "0.01", whereas the
new behavior displays it as "10m".```
• Consistent SI-prefix for ticks. Fixes #1746. · 91531cf7
Mike Bostock authored
```When a SI-prefix format (type "s") is passed to scale.tickFormat, compute a
suitable SI-prefix based on the maximum value in the range, and then use that
prefix for all ticks rather than computing the SI-prefix on a per-tick basis.```
• Fix ordinal scales with singleton domains. · d6ca25e8
Mike Bostock authored
`Fixes #1717. Turns out, -1 % 1 is 0!`
• Listen to the touch target. · f9e00b1d
Mike Bostock authored
```This ensures that if the touch target is removed from the DOM during a zoom
gesture, the zoom behavior continues to receive events; touch events, unlike
other events, are always dispatched to the target of the touchstart event rather than the window.```
• Better ticks for subsecond domains. · e03b6454
Mike Bostock authored
```Rather than starting the ticks on the minimum domain value, round up based on
the step size. Fixes #1757.```
• 100% to 125% faster #rgb/#rrggbb string parsing across all platforms. Tests... · d9768e52
Darrick Brown authored
`100% to 125% faster #rgb/#rrggbb string parsing across all platforms. Tests pass. http://jsperf.com/rgb-str-vs-regex`
• Shorten selectAll to just `Sizzle` · 086de835
Timmy Willison authored
• Remove redundant Sizzle.uniqueSort call · 336f3afc
Timmy Willison authored
• Clamp latitude for conic conformal projection. · defe5bc8
Mike Bostock authored
```The Lambert conic conformal projection extends to infinity along the outer edge
of the projection, and thus the latitude must be clamped either at -π/2 or +π/2
depending on the parallels. Fixes #1802.```
• Remove workaround for WebKit bug 44083. · 2b148070
Mike Bostock authored
`This was fixed in 2010, so I think it’s safe to remove the workaround now.`
• d3.touch defaults to changedTouches. · 467f1490
Mike Bostock authored
```This way, it’s easier to tell whether the touch changed during the event. This
also fixes #1600 because the drag behavior now only dispatches a drag event on
elements that moved, even if multiple touches are active.```
• Add d3.touch; fix #1786. · 38724915
Mike Bostock authored
```The drag behavior no longer crashes when the element being dragged is removed
from the DOM. In addition, the new d3.touch method extracts a single identified
touch from the current touch event, making it more efficient during multitouch.
The drag behavior now assigns touchmove and touchend listeners on the target
element of the touchstart event, rather than the window.```
• Fix all touches ending on any touch ending. · ee23f941
Mike Bostock authored
```The drag behavior registers a touchend listener for each started touch; however,
a touchend event is dispatched to ALL listeners when any touch ends, not just
for the corresponding starting touch. The drag behavior must therefore detect
whenever the ending touch is the corresponding starting touch, and ignore other
ending touches.

This fixes the drag behavior during multitouch, as discussed in #1786.```
• Prefer interpolateNumber when coercible to number. · 947c6090
Mike Bostock authored
```Objects that are coercible to numbers, such as Dates, are often more usefully
interpolated as numbers rather than as objects.```
• Instead of bisectBy, replace bisector. · 90b6c0b9
Mike Bostock authored
```For backwards-compatibility, bisector checks the arity of the specified
function, and if the function only takes a single argument, it is wrapped with a
suitable comparator.```
Mike Bostock authored
```Fixes #1766. Unlike d3.bisector(accessor), this allows you to define a bisector
that works in reverse order.

An awkward aspect of implementing bisection on top of a comparator is that it is
often the case that the sorted array contains objects (e.g., rows from a TSV),
while the search value is a primitive value (e.g., a number). Thus, you want to
apply an accessor to the array elements but not to the search value.

The solution here is to invoke the comparator deterministically: the first
argument is always an element from the array, and the second argument is always
the search value. This lets a comparator apply an accessor to array elements but
not to search values.```
7. 23 Mar, 2014 1 commit
8. 22 Mar, 2014 2 commits
9. 21 Mar, 2014 1 commit
10. 20 Mar, 2014 2 commits
11. 17 Mar, 2014 2 commits