IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Graphs from csv [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 53
    Points : 133
    Points
    133
    Par défaut Graphs from csv
    Bonjour,

    j'ai un petit soucis ave la création de graphiques depuis un fichier csv.

    Fichier csv: d:\toto.csv
    le code sensé faire un joli graphique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    #load the appropriate assemblies 
    [void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
    [void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms.DataVisualization")
    
    # create chart object 
    $Chart = New-obJect System.Windows.Forms.DataVisualization.Charting.Chart 
    $Chart.Width = 1000 
    $Chart.Height = 500 
    $Chart.Left = 40 
    $Chart.Top = 30
    
    $datasource  = Import-Csv -path D:\toto.csv -delimiter ";" | select-object Lettre,Count | Format-Table
    $LettreNames = @(foreach($Lettre in $datasource){$Lettre.Lettre}) 
    $SessionCount = @(foreach($Count in $datasource){$Count.Count})
    
    # create a chartarea to draw on and add to chart 
    $ChartArea = New-Object System.Windows.Forms.DataVisualization.Charting.ChartArea 
    [void]$Chart.Series.Add("Data") 
    $Chart.Series["Data"].Points.DataBindXY($LettreNames, $SessionCount)
    
    # add data to chart 
    
    # display the chart on a form 
    $Chart.Anchor = [System.Windows.Forms.AnchorStyles]::Bottom -bor [System.Windows.Forms.AnchorStyles]::Right -bor 
                    [System.Windows.Forms.AnchorStyles]::Top -bor [System.Windows.Forms.AnchorStyles]::Left 
    $Form = New-Object Windows.Forms.Form 
    $Form.Text = "PowerShell Chart" 
    $Form.Width = 1080
    $Form.Height = 600 
    $Form.controls.add($Chart) 
    $Form.Add_Shown({$Form.Activate()}) 
    $Form.ShowDialog()
    Le formulaire est créé mais pas le graphique.
    Je n'ai pas d'erreur dans la console.
    Je pense qu'il doit y avoir un problème dans la définition des $Chart.Series.

    merci pour votre aide

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    ajoute la ligne 'Lettre;Count' dans le fichier csv.
    Supprime l'appel à Format-table, et le select-object redondant
    Ajoute ceci avant de créer la série 'Data' :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    $Chart.ChartAreas.Add($ChartArea)

    Tu peux aussi simplifier :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $LettreNames = foreach($Lettre in $datasource){$Lettre.Lettre} 
    $SessionCount = foreach($Count in $datasource){$Count.Count}
    Ou encore avec la v4
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $Chart.Series["Data"].Points.DataBindXY($datasource.Lettre, $SessionCount)
    Pour l'autre propriété il y a une collision avec le pseudo membre Count ajouté par PS, si tu le renommes tu peux écrire directement ceci
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $Chart.Series["Data"].Points.DataBindXY($datasource.Lettre, $datasource.Total)
    L'itération se fait automatique.

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 53
    Points : 133
    Points
    133
    Par défaut
    Bonjour,

    Comme d'habitude, ça marche impeccable après tes corrections.

    Respects.

    merci beaucoup.

    Code final:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    #load the appropriate assemblies 
    [void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
    [void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms.DataVisualization")
    
    # create chart object 
    $Chart = New-obJect System.Windows.Forms.DataVisualization.Charting.Chart 
    $Chart.Width = 1000 
    $Chart.Height = 500 
    $Chart.Left = 40 
    $Chart.Top = 30
    
    $datasource  = Import-Csv -path D:\toto.csv -delimiter ";"
    $LettreNames = foreach($Lettre in $datasource){$Lettre.Lettre}
    $SessionCount = foreach($Count in $datasource){$Count.Count}
    
    # create a chartarea to draw on and add to chart 
    $Chart.ChartAreas.Add($ChartArea)
    $ChartArea = New-Object System.Windows.Forms.DataVisualization.Charting.ChartArea 
    $Chart.Series.Add("Data") 
    $Chart.Series["Data"].Points.DataBindXY($datasource.Lettre, $SessionCount)
    
    
    # display the chart on a form 
    $Chart.Anchor = [System.Windows.Forms.AnchorStyles]::Bottom -bor [System.Windows.Forms.AnchorStyles]::Right -bor 
                    [System.Windows.Forms.AnchorStyles]::Top -bor [System.Windows.Forms.AnchorStyles]::Left 
    $Form = New-Object Windows.Forms.Form 
    $Form.Text = "PowerShell Chart" 
    $Form.Width = 1080
    $Form.Height = 600 
    $Form.controls.add($Chart) 
    $Form.Add_Shown({$Form.Activate()}) 
    $Form.ShowDialog()

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [HighCharts] Graphe avec Highcharts et fichier csv
    Par jarbinx dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 28/07/2014, 18h36
  2. COPY FROM + CSV + les titres des colonnes ?
    Par logiclogic dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 22/01/2013, 13h35
  3. [Débutant] Export table from sql to csv using c#
    Par Lychee dans le forum C#
    Réponses: 1
    Dernier message: 27/09/2012, 14h29
  4. select from csv
    Par dombeya dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/04/2010, 22h57
  5. Copy from avec plus de champs dans csv que dans la table
    Par Débéa dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 20/10/2009, 08h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo