Differences

This shows you the differences between two versions of the page.

Link to this comparison view

isrm:laboratoare:v2:01 [2024/06/28 09:42]
mbarbulescu
isrm:laboratoare:v2:01 [2024/06/28 09:48] (current)
mbarbulescu [Task 03: Basic plot]
Line 211: Line 211:
 Apoi urmează o serie de nume de clase din [[https://​www.nsnam.org/​doxygen/​group__attribute.html|sistemul de atribute al ns-3]] (''​ns3::​Ipv4Header,​ ns3::​TcpHeader''​) și cu o listă de trace-uri specifice clasei respective. ​ Apoi urmează o serie de nume de clase din [[https://​www.nsnam.org/​doxygen/​group__attribute.html|sistemul de atribute al ns-3]] (''​ns3::​Ipv4Header,​ ns3::​TcpHeader''​) și cu o listă de trace-uri specifice clasei respective. ​
  
 +=====  Task 03: Basic plot =====
  
 +Ne propunem să validăm și că funcționează generarea de grafice, lucru pe care îl vom folosi la toate laboratoarele. ​
  
 +Descarcati fișierul de date numit  **plotting_data1.csv** ce conține:
 +<file csv plotting_data1.csv>​
 + # comentarii ​
 + # X Y
 +   1 2
 +   2 3
 +   3 2
 +   4 1
 +</​file>​
 +
 +Pe baza acestor date, graficul poate fi construit folosind urmatorul template (pe care il puteti folosi si la restul laboratoarelor):​
 +
 +<code python>
 +import copy
 +import numpy as np
 +import matplotlib
 +import matplotlib.pyplot as plt
 +
 +# Calea absoluta catre fisierul de date din care citim
 +# TODO - trebuie inlocuita cu calea corecta
 +DATA_FILE = '​plotting_data1.csv'​
 +columns = ['​x',​ '​y'​]
 +
 +# Citim datele din fisier
 +# Argumentul delimiter precizeaza care este delimitatorul dintre coloane
 +# Argumentul skip_header precizeaza cate linii nu vor fi citite pornind cu inceputul fisierului
 +# Argumentul names este unul foarte util deoarece permite asocierea de nume pentru coloanele din fisier si
 +# de asemenea duce la un acces foarte usor al datelor in script. In acest exemplu, names va fi egal cu ['​x',​ '​y'​]
 +# ceea ce inseamna ca putem accesa valorile din prima coloana prin sim_data['​x'​].
 +# Argumentul dtype setat specifica modul in care vor fi interpretate coloanele (string-urile ca string-uri, float-urile ca float-uri).
 +# In absenta acestui argument, valorile din coloane vor fi interpretate ca float.
 +sim_data = np.genfromtxt(DATA_FILE,​ delimiter='​ ', skip_header=2,​ names=columns,​ dtype=None)
 +
 +def plot_data(sim_data):​
 +    data = copy.deepcopy(sim_data)
 +
 +    # Apelul subplots poate fi folosit pentru a crea mai multe subgrafice in cadrul aceluiasi grafic sau in cadrul unor grafice diferite
 +    # Prin figsize se specifica dimensiunea graficului
 +    fig, ax = plt.subplots(figsize=(12,​12))
 +    # Valori stilistice pentru grafic
 +    ax.grid(color='​b',​ alpha=0.5, linestyle='​dashed',​ linewidth=0.5)
 +    # Denumirile axelor Ox si Oy, precum si titlul graficului
 +    plt.xlabel('​X values'​)
 +    plt.ylabel('​Y values'​)
 +    plt.title('​A very nice looking plot')
 +
 +    # Aici este construit efectiv graficul. Campul label va fi folosit in cadrul legendei graficului
 +    ax.plot(data['​x'​],​ data['​y'​],​ label='​My plot')
 +    ax.legend()
 +    ​
 +    plt.savefig("​l1t3.png"​)
 +
 +if __name__ == '​__main__':​
 +    plot_data(sim_data)
 +</​code>​
 +
 +Verificați după rulare că în folderul din docker aveți fișierul ''​l1t3.png''​. De asemenea, pentru că folosim [[https://​docs.docker.com/​storage/​storagedriver/​overlayfs-driver/​|overlayfs]] puteți accesa de pe mașina fizică/​virtuală din care rulați docker-ul din folderul: ''​~/​.isrm2024/​merge/​l1t3.png''​ presupunând că la build ati folosit ca parametru numele docker image-ului ''​isrm2024''​. ​
  
  
isrm/laboratoare/v2/01.1719556957.txt.gz · Last modified: 2024/06/28 09:42 by mbarbulescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0