es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Manipular las etiquetas existentes en un objeto de digráfica.

Hay este objeto digraph de Graphviz generado desde una biblioteca. Estoy tratando de cambiar la fuente para las etiquetas…

python
digraph "algo" {
graph [rankdir=LR]
node [margin=0 shape=plaintext]
"algo" [label="algo" fontsize=30]
"otro-hacia-atrás-otro" [label=iglo fontsize=30]
"otro-hacia-atrás-otro-esto" [label="esto" fontsize=23]
[...]

Llamando
python
g.attr('graph', fontname='Arial')
g.attr('node', fontname='Arial')

Después no tiene efecto, supongo que porque esos atributos ya existen o necesitan ser establecidos antes de agregar nodos.

¿Hay alguna manera de manipular ciertos nodos?
La regex estaría bien, pero parece que ni siquiera puedo sobrescribir el contenido de un nodo.
¿O tal vez reconstruir un grafo mientras se itera sobre el cuerpo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para cambiar la fuente de las etiquetas de ciertos nodos en un objeto digrafo de graphviz, se puede utilizar el ID del nodo para acceder directamente a sus atributos. Por ejemplo:

    g.get_node("algo").attr['label'] = '<font face="Arial" point-size="30">algo</font>'
    

    Esto cambiará la fuente de la etiqueta del nodo “algo” a Arial con un tamaño de fuente de 30. Se puede usar regex para seleccionar varios nodos con ID similares y modificar sus atributos en un bucle.

    Para sobrescribir el contenido de un nodo, se puede utilizar de manera similar el ID del nodo para acceder a sus atributos y modificar directamente el atributo ‘label’. Por ejemplo:

    g.get_node("algo").attr['label'] = "nueva etiqueta"
    

    Para reconstruir un grafo mientras se itera sobre su cuerpo, se puede utilizar la palabra clave ‘subgraph’ para aislar secciones del grafo y modificarlas de forma independiente. Por ejemplo:

    for subgrafo in g.subgraphs():
        for nodo in subgrafo:
            # hacer algo con el nodo
    

    Esto permitirá modificar los nodos dentro de ciertos subgrafos o clústeres del grafo sin afectar a los demás.

Comments are closed.