[BUG]: geo projections lose their D3 default rotation
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 72/100
- Tipo de issue
- Bug
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Stack de tecnologia
- javascript
- Domínio
- data-visualization
Direção de pesquisa
Comece em Geo.updateProjection e compare o tratamento da rotação com os construtores de projeção do D3, especialmente os valores padrão de quincuncial e wiechel descritos na issue. Reproduza o exemplo peirce quincuncial no navegador e, em seguida, verifique se a orientação renderizada preserva o valor padrão canônico da projeção e ainda aplica uma rotação solicitada.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Description
Geo.updateProjection calls projection.rotate([-rotation.lon, -rotation.lat, rotation.roll]) unconditionally. For a world-scope map projection.rotation defaults to [0, 0, 0], so any rotation the D3 projection ships with is discarded.
Six of the projections in plotly.js carry a non-identity default rotation:
| projection | D3 default rotation |
|---|---|
albers |
[96, 0, 0] |
bertin1953 |
[-16.5, -42, 0] |
gringorten quincuncial |
[-90, -90, 45] |
peirce quincuncial |
[-90, -90, 45] |
sinu mollweide |
[-20, -55, 0] |
wiechel |
[0, -90, 45] |
For the quincuncials and wiechel that rotation is geometric: it places the sphere in the polar aspect and tilts the square 45°, and is applied inside the projection's own constructor:
// d3-geo-projection/src/quincuncial/index.js
return projection(projectQuincuncial)
.rotate([-90, -90, 45])
.clipAngle(180 - 1e-3);
Replacing it renders a different orientation from the one D3 defines. (For albers, D3's [96, 0, 0] preconfigures it for the USA, so discarding it is probably intended.)
Screenshots/Video
For 'peirce quincuncial':
| D3 projection | Plotly projection |
|---|---|
Steps to reproduce
- Be on master
- Open Plotly devtools
- Enter the following snippet into the browser console:
Plotly.newPlot(gd, [{
type: 'choropleth',
locations: ['GHA', 'ARG', 'AUS', 'CAN'],
z: [1, 2, 3, 4],
showscale: false
}], {
geo: { projection: { type: 'peirce quincuncial' }, fitbounds: false },
height: 800
});
- Note that
- Expected: the canonical peirce quincuncial orientation.
- Actual: rendered with rotation
[0, 0, 0].
Screenshots
Notes
- A fix needs to compose the requested rotation onto each projection's default rather than replace it, since
d3.geoProjection.rotate()replaces - This was discovered in #7948. It's possible that this is intentional for a good reason, but it would be worth looking at changing it regardless.
- Linguagem predominante
- JavaScript
- Estrelas
- 18.3k
- Forks
- 2k
- Merge médio
- 2d 10h
- PRs com merge (30d)
- 30
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de plotly/plotly.js
-
chore P3 plotly-internal size: 3 task
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 77/100
-
chore P1 plotly-internal size: 1 task
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 82/100
-
chore P3 plotly-internal size: 1 task
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
-
bug infrastructure P2
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 65/100
Todas as issues de plotly/plotly.js
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
-
Theme loads third-party resources on every page (jsdelivr web font, cdnjs Font Awesome) – GDPR Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
docToolchain/docToolchain#1705 ·
-
Timezone select lists one option per character; duplicate "Failed" reason; shared tracker popover id Abertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
nightscout/nocturne#1414 ·
-
bug v2
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
modelcontextprotocol/inspector#2458 · 1 comentário ·
-
Mend: dependency security vulnerability status: needs triage 🕵️♀️
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
carbon-design-system/ibm-products#9907 ·