指定图表大小时,.NET图表控件忽略LabelAutoFitStyle

时间:2016-09-18 21:29:54

标签: .net powershell charts

我尝试使用.NET 4内置图表控件生成折线图。 我希望X轴标签的角度为我希望我的图表具有特定的尺寸。

如果指定图表的宽度/高度,则忽略LabelAutoFitStyle。我也尝试在标签上使用.Angle属性等,只有在我没有指定宽度和宽度的情况下它们才有用。图表的高度。

但如果我没有指定宽度&图表的高度,数据都被限制在一个非常小的图表中。

有没有办法使用LabelAutoFitStyle 确保图表尺寸更大,最好是特定尺寸。

我已尝试使用$ chart.MinimumSize和$ chart.Size,但它们似乎不会影响图表输出。

[void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms.DataVisualization")

ForEach ($url in $urlList)
{
    $chart = New-Object System.Windows.Forms.DataVisualization.Charting.Chart
    #$chart.Width = 1024
    #$chart.Height = 690

    $chart.BackColor = [System.Drawing.Color]::White
    $chart.Titles.Add("$url load time (ms)")
    $chart.Titles[0].Alignment ="topLeft"
    $chart.AutoSize = $true
    $chartArea = New-Object System.Windows.Forms.DataVisualization.Charting.ChartArea
    $chartArea.name = "ChartArea1"
    $chartArea.AxisY.Title = "Load Time (ms)"
    $chartArea.AxisX.Title = "Time"
    $chartArea.AxisX.IsLabelAutoFit = $true
    $chartArea.AxisX.LabelAutoFitStyle = [System.Windows.Forms.DataVisualization.Charting.LabelAutoFitStyles]::LabelsAngleStep90

    $chartArea.Axisx.LabelStyle.Enabled = $true 
    $chart.ChartAreas.Add($chartArea)
    $colorIndex = 0

    ForEach ($pac in $pacList)
    {
        $chart.Series.Add($pac)
        $chart.Series[$pac].ChartType = "Line"
        $chart.Series[$pac].BorderWidth = $borderWidth
        $chart.Series[$pac].IsVisibleInLegend = $true
        $chart.Series[$pac].ChartArea = "ChartArea1"
        $chart.Series[$pac].Color = $colorList[$colorindex]
        $colorindex++

    }
    $urlData = $data | Where-Object { $_.URL -eq $url }
    ForEach ($row in $urlData)
    {
        $chart.Series[$row.'PAC FILE'].Points.AddXY( $row.TIME, $row.'Page Load Time 2 (ms)')
    }

    $chartFilename = (Join-Path -Path $PSScriptRoot -ChildPath (Fix-Filename $url)) + ".png"
    $chart.SaveImage($chartFilename,"png")
}

1 个答案:

答案 0 :(得分:1)

如果我使用以下行:

$chartarea.AxisX.IsLabelAutoFit = $false
$chartarea.AxisX.LabelStyle.Angle = 90

我将 IsLabelAutoFit 明确地设置为 $ false
我可以将宽度和高度设置为我喜欢的标签,标签的角度为90度。

$chart.Width = 1024
$chart.Height = 690