Add Support for Velocity Arrows in Scatter 3D Graphs
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 18.8k
- Forks
- 2.8k
- Avg merge
- 16h 26m
- Merged PRs (30d)
- 21
Description
Original issue description:
I propose adding a feature to the scatter and scatter3d graph types in Plotly to support velocity arrows. This feature would allow users to display directional arrows, enhancing data visualization for applications that involve vector fields, velocities, forces, or any data represented by direction and magnitude.
Update 31 Aug 2026:
- 2D quiver now supported with
go.Quiver()(as of v7.0.0) - Our answer for 3D quiver is
go.Cone(), but it has limitations:
For 3D though, Cone() isn't really an arrow. To get a velocity vector you have to combine a Cone (head) with a Scatter3d line (shaft) and keep them in sync manually. The bigger issue is that cone size is in data units while line width is in pixels — so on zoom the head and shaft drift out of proportion (head swallows the shaft, or disappears entirely).
What I was after is the 3D analogue of Quiver: takes x, y, z, u, v, w, draws shaft + attached head, with the head sized in pixels so it stays legible under zoom and rotation.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by comparing the existing go.Quiver() and go.Cone() entry points and the scatter3d graph type. Define how a 3D analogue should accept x, y, z, u, v, w and keep its shaft and arrowhead attached and legible during zoom and rotation; done means the feature is implemented and its behavior is covered by appropriate tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- plotly, python
- Domain
- data-visualization
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100