2017-07-05 21 views
0

パワーシェルで書かれています.Net Chartコントロールを使用してグラフ、グラフを作成しています。現時点では、私は次のように各画像ファイルに分けて、グラフをこれらのグラフを保存することができるよ:複数の画像を1つの.Netグラフコントロールで追加する

$mailHash = @{"Email Set"=$emailPer;"No Email"=$noEmailPer} 

$outFilePic= "C:\My Documents\Documents" 

Function drawPie ($hash){ 

    Add-Type -AssemblyName System.Windows.Forms 
    Add-Type -AssemblyName System.Windows.Forms.DataVisualization 
    $Chart = New-object System.Windows.Forms.DataVisualization.Charting.Chart 
    $ChartArea = New-Object System.Windows.Forms.DataVisualization.Charting.ChartArea 
    $Series = New-Object -TypeName System.Windows.Forms.DataVisualization.Charting.Series 
    $ChartTypes = [System.Windows.Forms.DataVisualization.Charting.SeriesChartType] 

    $Series.ChartType = $ChartTypes::Pie 
    $Chart.Series.Add($Series) 
    $Chart.ChartAreas.Add($ChartArea) 
    $Chart.Series['Series1'].Points.DataBindXY($hash.keys, $hash.values) 
    $Chart.Series[‘Series1’][‘PieLabelStyle’] = ‘Disabled’ 

    $Legend = New-Object System.Windows.Forms.DataVisualization.Charting.Legend 
    $Legend.IsEquallySpacedItems = $True 
    $Legend.BorderColor = 'Black' 
    $Chart.Legends.Add($Legend) 
    $chart.Series["Series1"].LegendText = "#VALX (#VALY%)" 

    $Chart.Width = 700 
    $Chart.Height = 400 
    $Chart.Left = 10 
    $Chart.Top = 10 
    $Chart.BackColor = [System.Drawing.Color]::White 
    $Chart.BorderColor = 'Black' 
    $Chart.BorderDashStyle = 'Solid' 

    $ChartTitle = New-Object System.Windows.Forms.DataVisualization.Charting.Title 
    $ChartTitle.Text = 'Email ' 
    $Font = New-Object System.Drawing.Font @('Microsoft Sans Serif','12', [System.Drawing.FontStyle]::Bold) 
    $ChartTitle.Font =$Font 
    $Chart.Titles.Add($ChartTitle) 
    $Chart.SaveImage($outFilePic, 'jpeg') 
} 

上記は円グラフに作成するための動的な機能です。したがって、多くの異なるチャートも作成されます。それらを1つのイメージに保存するにはどうすればいいですか?

答えて

1

は、あなたが以下のバージョンを試すことができ、私は同じチャートオブジェクトに複数の系列や伝説を追加した(私はこれのための動的フェッチシリーズ名を行っている)、それを保存:

Function drawPie ($chart,$hash,$ChartT){ 


    $ChartArea = New-Object System.Windows.Forms.DataVisualization.Charting.ChartArea 
    $Series = New-Object -TypeName System.Windows.Forms.DataVisualization.Charting.Series 


    $Series.ChartType = $ChartT 
    $Chart.Series.Add($Series) 
    $Chart.ChartAreas.Add($ChartArea) 

    $Chart.Series[$series.name].Points.DataBindXY($hash.keys, $hash.values) 
    $Chart.Series[$series.name][‘PieLabelStyle’] = ‘Disabled’ 
    $Chart.Series[$series.name].ChartArea = $ChartArea.name 

    $Legend = New-Object System.Windows.Forms.DataVisualization.Charting.Legend 
    $Legend.IsEquallySpacedItems = $True 
    $Legend.BorderColor = 'Black' 
    $Chart.Legends.Add($Legend) 
    $chart.Series[$series.name].LegendText = "#VALX (#VALY%)" 
    $chart.Series[$series.name].Legend = $Legend.name 



} 


$mailHash = @{"Email Set"=$emailPer;"No Email"=$noEmailPer} 
#modify this path 
$outFilePic= "d:\temp\stala.jpeg" 
Add-Type -AssemblyName System.Windows.Forms 
Add-Type -AssemblyName System.Windows.Forms.DataVisualization 
$Chart = New-object System.Windows.Forms.DataVisualization.Charting.Chart 
$Chart.Width = 1400 
$Chart.Height = 800 
$Chart.Left = 10 
$Chart.Top = 10 
$Chart.BackColor = [System.Drawing.Color]::White 
$Chart.BorderColor = 'Black' 
$Chart.BorderDashStyle = 'Solid'  
$ChartTypes = [System.Windows.Forms.DataVisualization.Charting.SeriesChartType] 
$data = @{"10"="5";"20"="5";"30"="100";} 
$data2 = @{"100"="1";"200"="49";"300"="50";} 
drawPie $chart $data $ChartTypes::Pie 
drawPie $chart $data2 $ChartTypes::Bar 
$Chart.SaveImage($outFilePic, 'jpeg') 
+0

TKSそんなにメイト!ほんとうにありがとう。 You'r saver:D – Ender

+0

hmmm、円グラフと棒グラフを組み合わせてみると問題があります。 "_グラフの領域 に、互換性のないグラフの種類が含まれています。たとえば、棒グラフと縦棒グラフは同じグラフ領域に存在できません_"。解決する可能性はありますか? – Ender

+1

@Ender PieとBarのチャートを1つに更新しました。確認できますか? –

関連する問題