Comments (2)
I don’t think it’s a good idea to expose an enumeration of axis orientations. There might be other orientations in the future, such as for polar coordinates. And it feels icky, especially if the orientation is defined as a string.
By analogy, consider scales: there’s no scale.type method to distinguish different types of scales such as d3.scaleLinear and d3.scaleOrdinal. Occasionally you need to distinguish scale types; for example, d3-axis tests for the presence of scale.bandwidth to shift ticks to the middle of each band for band scales. But as that case demonstrates, it’s better to test for a specific feature (bandwidth) than to enumerate the scale types explicitly. Extending the analogy, when developing on the web, it’s better to test whether the current browser supports a feature than to write code that checks the user-agent.
It’d be nice, maybe, if you could use instanceof
to test whether something is a particular type of scale, but alas that does not play nice with D3’s use of functions-as-objects, where a scale (like an axis) is both a function and an object. There’s no way to extend Function in JavaScript. (Actually that’s not totally true because you can say class Foo extends Function {}
, but I think that requires using the Function constructor—there’s no way to extend a closure defined by a function expression, as far as I know.) So you can’t say x instanceof d3.scaleLinear
, either, although that is supported for D3 classes that do not extend function, such as d3.selection.
I can’t see the code you’re writing, but it might be better for you to expose four of your own constructors, and then instantiate the axis internally. That way you’re in control of how the axis gets instantiated, and you know what orientation it is, and there’s no possibility of receiving an axis of an unsupported (or unknown) orientation.
from d3-axis.
I was considering either wrapping the axis construction or just adding a property to it (such as "type" or otherwise) -- doesn't need to be a string or the like. That's probably the avenue I'll take moving forward.
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.