[FEATURE]: line graphs with line color based on value
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 45/100
- Issue 类型
- 功能
- 描述清晰度
- 基本清楚
- 活跃度
- 活跃
- 技术栈
- javascript
调研方向
Start with the scatter attributes in src/traces/scatter/attributes.js, the defaults in line_defaults.js, and gradientWithBounds in src/components/drawing/index.js. Review how fill gradients, legend icons, and image tests are handled, then resolve the proposed line.gradient API with maintainers. Done includes line rendering, reference images, a draftlogs/ changelog, and a rebuilt generated schema; scattergl is out of scope.
由索引模型根据 Issue 内容生成。
描述
Description
Line graphs can have only one colour per series.
Sometime it is very useful to have the line colour variable based on value, to show visually ranges.
For example, I am using right now Apexcharts for energy prices and I obtain:
Why should this feature be added?
Provide information visually, without the need of reading values, which is useful when preparing graph which must be understood easily and also by less technical people.
I can open a PR if the feature is approved. It would be generated by LLM and tested myself.
Mocks/Designs
See screenshot above.
Notes
Related: https://github.com/plotly/plotly.js/issues/5259
This is Claude asked about the complexity of the implementation:
Area graphs: works today
Scatter traces have a fillgradient attribute (src/traces/scatter/attributes.js:387). Set it to type: 'vertical' and give start/stop in y-axis units. Colour scales accept the same position twice, so a scale can switch colour sharply instead of blending. That makes thresholds possible:
// thresholds 2 and 4, gradient spans y = 0..6
fillgradient: {
type: 'vertical', start: 0, stop: 6,
colorscale: [[0, base], [2/6, base], [2/6, 'orange'],
[4/6, 'orange'], [4/6, 'red'], [1, 'red']]
}
Lines and stepped lines: needs a new attribute
line.color takes one colour only. The drawing helper behind fillgradient (gradientWithBounds in src/components/drawing/index.js:462) can already colour a line instead of a fill. So the feature would mostly reuse existing code:
- New attributes: add them to the scatter line settings, plus their defaults in
line_defaults.js. - Drawing: call the existing helper on the line, in the same way the fill code does.
- Other pieces:
- the legend icon;
- image tests (a human must generate the reference images);
- a changelog file in
draftlogs/; - a rebuild of the generated schema.
It would work for all line shapes, including hv, vh, hvh, vhv and spline. It would not cover the WebGL version (scattergl), and stacked areas would be coloured by their stacked height.
For the settings, I suggest a line.gradient that copies fillgradient (type, start, stop, colorscale). That keeps the API consistent, and plotly.js puts consistency first. Your threshold list could be added on top of that as an easier way to write the stepped colour scale. The maintainers should decide on that part.
- 主要语言
- JavaScript
- 星标
- 18.4k
- 派生
- 2.1k
- 平均合并
- 2 天 16 小时
- 30 天内合并 PR
- 11
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
plotly/plotly.js 的其他 Issue
-
[BUG]: `events` is required but not declared in dependencies可能已有人在做 @KoolADE85 于 6 天前认领。 未关闭bug P3 size: 1
难度 2/5 1-3 小时 新手友好度 83/100
plotly/plotly.js#8163 · 已指派 1 人 ·
维护者通常 1 天内回复
-
[BUG]: `sankey`: `node.x` / `node.y` of `0` is ignored可能已有人在做 @adimalkar 于 11 天前认领。 未关闭bug P3 size: 1
难度 2/5 1-3 小时 新手友好度 75/100
plotly/plotly.js#8150 · 1 条评论 ·
维护者通常 1 天内回复
-
[BUG]: `scatterpolargl` drops points between 10000 and 100000 points可能已有人在做 @Tanishdete333 于 11 天前认领。 未关闭bug P3 size: 1
难度 2/5 1-3 小时 新手友好度 82/100
plotly/plotly.js#8148 · 1 条评论 ·
维护者通常 1 天内回复
-
[BUG]: findEmpties throws "iterated with no new neighbors" for large NaN regions in contour (double-precision underflow)可能已有人在做 @davrens101 于 10 天前认领。 未关闭bug P3 size: 3
难度 2/5 1-3 小时 新手友好度 86/100
plotly/plotly.js#8108 · 4 条评论 ·
维护者通常 1 天内回复
-
chore P3 plotly-internal size: 3 task
难度 2/5 1-3 小时 新手友好度 77/100
plotly/plotly.js#8064 · 1 条评论 ·
维护者通常 1 天内回复
相似的 Issue
-
channels:add check:passed
难度 1/5 1 小时以内 新手友好度 82/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 83/100
-
难度 2/5 1-3 小时 新手友好度 66/100
SasanLabs/VulnerableApp#912 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 76/100
维护者通常 1 天内回复
-
[chore]: Force minimatch 11.0.1 in the CI scripts' jest tooling (Dependabot #140)可能已有人在做 @alishair7071 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 78/100
jaegertracing/jaeger#10133 · 2 条评论 ·
维护者通常 1 天内回复