-
Notifications
You must be signed in to change notification settings - Fork 107
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
center
offset
#37
Comments
Have you tested your propose change? Note that lines are rendered offset by half a pixel to produce crisp edges: line = line.merge(tickEnter.append("line")
.attr("stroke", "#000")
.attr(x + "2", k * tickSizeInner)
.attr(y + "1", 0.5)
.attr(y + "2", 0.5)); |
I'm admittedly somewhat new to d3.js and I am not familiar with the build process, so i haven't tested the fix. However, I made an example here to demonstrate what I'm seeing. Am I misunderstanding something? |
Here’s a pixel grid overlaid on your example: And without rangeRound for comparison: I see what you mean now. If the bands are 15px wide, then there should be 7px on either side of the tick (7 + 1 + 7 = 15). Instead there is 8px on the left side and 6px on the right side. And both range and rangeRound should produce the same result. |
Hmm. Making the proposed change fixes the above example, but negatively affects point scales without rangeRound. Here’s before (with the ticks in red, so they can be seen overlaid on top of the domain path): And after: However, we can fix this fairly easily like so: var offset = Math.max(0, scale.bandwidth() - 1) / 2; |
Okay, fix pending in #38. Look good? |
Appreciate the time taken to look into this! A few comments:
|
The bandwidth is zero for point scales (d3.scalePoint), which is what I was discussing in #37 (comment). |
Got it. I wasn't familiar with that scale so I'd glossed over the phrase "point scale" when I read your comment. I think it looks good to me. |
I think the
center
func offset inaxis.js
is slightly off.Suppose bandwidth is 3. Then we expect the offset to be 1, to place it on the middle pixel. With the current implementation, you would get 1.5 or 2, depending on the rounding flag. I think the correct offset should be:
The text was updated successfully, but these errors were encountered: