Comments (4)
None of those modifications are superfluous in the general case. Various changes to the axis configuration can require those updates:
- The axis tick size can change.
- The axis orientation can change.
- A prior axis transition can be interrupted, preventing the tick opacity from reaching 1.
(You also removed a few essential features of the axis, like a default appearance and cross-fading ticks during a transition.)
You could move a few things to entering elements if you require that the axis orientation doesn’t change. But then you’d have to document that the way to change the axis orientation is to remove the old axis and add a new axis, rather than just re-applying a new axis with the new orientation.
You could avoid setting the entering line’s x2 and entering tick’s x attributes in the case that you’re updating the axis instantaneously (since they are subsequently set on enter + update), but this is a relatively minor optimization.
You could avoid setting a few attributes separately on each tick, but it would require restructuring the axis so that the tick labels and tick lines are grouped separately, rather than grouping the label and line for each tick together. Which would mean you’d need to set the transform attribute on twice as many elements to move the ticks into place, or using attributes to position the tick labels and lines rather than transforms.
I could maybe see changing the axis to assume a fixed orientation; see e1d90ce. (I also changed it to only define default styles the first time the axis is applied.) I am sure it will trip up at least some users in the future, but maybe that’s acceptable if documented. I could also maybe see the axis detecting an orientation change and patching the difference just in that case, though I fear that adds complexity to the implementation…
from d3-axis.
I’ve merged the aforementioned optimizations and documented the requirement that the axis orientation is fixed. If you have other suggested optimizations, please let me know. Thank you.
from d3-axis.
Can you update http://bl.ocks.org/mbostock/db6b4335bf1662b413e7968910104f0f to use alpha 50, as it incorporates the above performance improvements?
Wrapping draw calls with d3.timeout
to avoid multiple updates per frame improves framerate in that example too, but makes code bulky and less suitable for learning. But you could add a note to the block's readme.
from d3-axis.
I updated it.
from d3-axis.
Related Issues (20)
- Support external rendering HOT 3
- How to apply pan/zoom to rotated X Axis labels? HOT 1
- Default formatter shows month name instead of Sunday HOT 2
- Date boundary issue for months with 31 days HOT 1
- Suggestion: Add axisTop example HOT 1
- `axis.tickValues` could also return `values`? HOT 3
- Render in vanilla HTML? HOT 2
- Right-align tick text in axisRight() ? HOT 1
- 如何入参是空,那么链式调用将被破坏
- Show scale extrema values in ticks HOT 1
- More configuration options?
- Uncaught TypeError: setting getter-only property "top" when calling axis function HOT 5
- not able to add custom attributes to the axis HOT 1
- Ticks with varying size
- Ticks misalignment HOT 2
- An option to disable the domain line HOT 1
- An option to generate grid lines HOT 3
- Ability to use `d3.timeXXX` on a scaleBand HOT 8
- Ability to set axis ticks count when using axis `tickFormat` function HOT 6
- d3-axis does not update SVG attributes when switching between axis orientations HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from d3-axis.