U
    ¹mœdô  ã                   @   sT  d Z ddlmZ ddlZddlmZ G dd„ deƒZeƒ Ze 	d¡ ej
ddd	� e d
¡ e d¡ edejdd�ƒ ejdddd	� edejdd�ƒ e dd¡ ejeeddƒeddƒƒdd	� edejdd�ƒ e eeddƒeddƒƒ¡ edejdd�ƒ eƒ Ze eedƒ¡ e eeddƒ¡ ejedd�Ze ee¡ e ¡  dS )zK
===========
Print Graph
===========

Example subclass of the Graph class.
é    N)ÚGraphc                       s„   e Zd ZdZd‡ fdd„	Zd‡ fdd„	Zdd	„ Z‡ fd
d„Zdd„ Zd‡ fdd„	Z	ddd„Z
‡ fdd„Zdd„ Z‡ fdd„Z‡  ZS )Ú
PrintGraphzc
    Example subclass of the Graph class.

    Prints activity log to file or standard output.
    NÚ c                    sB   t ƒ jf ||dœ|—Ž |d kr2dd l}|j| _nt|dƒ| _d S )N)ÚdataÚnamer   Úw)ÚsuperÚ__init__ÚsysÚstdoutÚfhÚopen)Úselfr   r   ÚfileÚattrr
   ©Ú	__class__© úz/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/../../../share/doc/networkx-3.1/examples/subclass/plot_printgraph.pyr	      s
    
zPrintGraph.__init__c                    s0   t ƒ j|fd|i|—Ž | j d|› d�¡ d S )NÚ	attr_dictz
Add node: Ú
)r   Úadd_noder   Úwrite)r   Únr   r   r   r   r   r      s    zPrintGraph.add_nodec                 K   s   |D ]}| j |f|Ž qd S ©N)r   )r   Únodesr   r   r   r   r   Úadd_nodes_from"   s    zPrintGraph.add_nodes_fromc                    s$   t ƒ  |¡ | j d|› d�¡ d S )NzRemove node: r   )r   Úremove_noder   r   )r   r   r   r   r   r   &   s    zPrintGraph.remove_nodec                 C   s   |D ]}|   |¡ qd S r   )r   )r   r   r   r   r   r   Úremove_nodes_from*   s    zPrintGraph.remove_nodes_fromc                    s8   t ƒ j||fd|i|—Ž | j d|› d|› d�¡ d S )Nr   z
Add edge: ú-r   )r   Úadd_edger   r   )r   ÚuÚvr   r   r   r   r   r    .   s    zPrintGraph.add_edgec                 K   s6   |D ],}|dd… \}}| j ||fd|i|—Ž qd S )Nr   é   r   )r    )r   Úebunchr   r   Úer!   r"   r   r   r   Úadd_edges_from2   s    zPrintGraph.add_edges_fromc                    s,   t ƒ  ||¡ | j d|› d|› d�¡ d S )NzRemove edge: r   r   )r   Úremove_edger   r   )r   r!   r"   r   r   r   r'   7   s    zPrintGraph.remove_edgec                 C   s*   |D ] }|dd… \}}|   ||¡ qd S )Nr   r#   )r'   )r   r$   r%   r!   r"   r   r   r   Úremove_edges_from;   s    zPrintGraph.remove_edges_fromc                    s   t ƒ  ¡  | j d¡ d S )NzClear graph
)r   Úclearr   r   )r   r   r   r   r)   @   s    
zPrintGraph.clear)Nr   N)N)N)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   r   r   r   r   r    r&   r'   r(   r)   Ú__classcell__r   r   r   r   r      s   	
r   ZfooÚbaré   )ÚweightÚbÚarzNodes in G: T)r   é   é
   zEdges in G: é   é   é	   é   éá   )Úseed)r-   Zmatplotlib.pyplotZpyplotZpltZnetworkxÚnxr   r   ÚGr   r   r   r   Úprintr   r    Úedgesr'   r&   ÚzipÚranger(   Zadd_pathZadd_starZspring_layoutÚposZdrawÚshowr   r   r   r   Ú<module>   s.   7


 