get (X, Y) coordinates of a node in sankey plot
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Tranquilo
- Stack tecnológico
- python
- Área
- data-visualization
Línea de trabajo
No se nombra ningún archivo, prueba ni punto de entrada. Empieza rastreando el manejo de las posiciones de los nodos Sankey en el código fuente y la documentación de plotly.py, y determina después si se puede especificar un acceso a coordenadas compatible o un comportamiento de conversión preciso; se considera terminado cuando las coordenadas solicitadas o la limitación documentada quedan establecidas con cobertura para nodos arrastrados.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem definition
I wrote an application that loads properties of a sankey plot from a file and displays it. I'd like to be able to manually (drag and drop) arrange node positions and then save their (X, Y) coordinates to a file to be able to continue the work later. For that I would need to get access to (X, Y) coordinates of nodes but I haven't found anything about that in the documentation and the source code.
Applied workaround
My current workaround is to read HTML source of generated plot and estimate (X, Y) coordinates based on parameters of translate functions defined for each node. However, this approach is inaccurate. Here's simplified code describing a single node:
<g class="sankey-node" transform="translate(13.260000228881836,401.4360046386719)">
<rect class="node-rect" height="185.32853214031275" width="20.000000000000004">
</rect>
...
</g>
The above node, in a python code, has X coordinate set to: 0.01 and Y coordinate set to 0.45. My current formulas to estimate python coordinates (X*, Y*) based on SVG translations (X, Y) are:
X* = (X - (node_width / 2)) / (plot_width - (margin_left + margin_right) - (padding_left + padding_right))
Y* = (Y - (node_height / 2)) / (plot_height - (margin_top + margin_bottom) - (padding_top + padding_bottom)) + node_height * 0.0009
Referring to the pasted SVG code and corresponding python coordinates the formulas would do the following:
X -> X* : 13.260000228881836 -> 0.01
Y -> Y* : 401.4360046386719 -> 0.45
I wrote that the above formulas are inaccurate because they:
[1] Reproduce python (X, Y) with some error.
[2] The error is affected by a plot size but it's not clear to me what is the relation. The error decreases with increasing plot size. When the plot is maximized on a 2560x1440 screen I get error less then 0.01 which is acceptable.
[3] In case of Y coordinate I had to add the node_height * 0.0009 component because the higher the node was the bigger the error was. I don't know where this number comes from but without it errors for high nodes were significantly bigger.
Questions
[1] Is there a better way read python (X, Y) coordinates of nodes?
[2] If there is no way to do it better could you tell if you plan to add a feature that would allow to access (X, Y) coordinates of nodes?
[3] Could you tell what are formulas used to transfrom python (X, Y) coordinates to parameters in the translate function used in the SVG code of a generated plot?
- Lenguaje dominante
- Python
- Estrellas
- 18.8k
- Forks
- 2.8k
- Merge medio
- 13 h 41 min
- PR fusionados (30 d)
- 21
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de plotly/plotly.py
-
P3 size: 1 task
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
P3 size: 1 task
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
bug P1
Dificultad 1/5 Menos de una hora Aptitud para principiantes 68/100
-
feature P3
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
-
feature P3
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Todos los issues de plotly/plotly.py
Issues similares
-
essnmx good first issue
Dificultad 1/5 Menos de una hora Aptitud para principiantes 95/100
-
[Feature] 奇物选择添加优先级 Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
syfoud/Simulated_Scepter#174 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Giskard-AI/giskard-oss#2840 · 1 comentario ·
-
A claim comment carrying the issue number is silently declined while the workflow reports success Abiertoarea: repo bug perceived difficulty: 2
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
yeti-platform/yeti#1380 ·