7

私のチャートは、今後 30 年間の値を予測します。最初の値は 1 年として表示する必要があります。その後、5 年、10 年、... 30 年まで表示されます。ただし、内部的には最初の年は 0 であり、省略されています。

ここに画像の説明を入力

カスタム ラベルを追加しようとしましたが、他のラベルが壊れるだけです。 ここに画像の説明を入力

AxisX の代わりに AxisX2 に追加すると、何もしません。チャートを作成して線を追加するコードは次のとおりです。

public static Chart MakeChart(string title)
{
    var chart = new Chart();

    var area = new ChartArea("GrafiekGebied");

    foreach (var axis in area.Axes)
    {
        axis.TitleForeColor = defaultColor;
        axis.LineColor = defaultColor;
        axis.InterlacedColor = defaultColor;
        axis.LabelStyle.Font = letterType;
        axis.LabelAutoFitMinFontSize = (int)letterType.Size;
        axis.LabelAutoFitMaxFontSize = (int)letterType.Size;
        axis.MajorGrid.LineColor = defaultColor;
        axis.MajorTickMark.Enabled = false;
        axis.MinorGrid.LineColor = defaultColor;
        axis.MinorTickMark.LineColor = defaultColor;
    }

    CustomLabel firstXlabel = new CustomLabel();
    firstXlabel.FromPosition = 0;
    firstXlabel.ToPosition = 0;
    firstXlabel.RowIndex = 0; // Also tried 1
    firstXlabel.Text = "1jr";

    area.AxisY.LineWidth = 0;
    area.AxisY.LabelStyle.Format = "€{#,##}";
    area.AxisX.TextOrientation = TextOrientation.Horizontal;
    area.AxisX.CustomLabels.Add(firstXlabel); // Adding it to AxisX2 does nothing
    area.AxisX.IsMarginVisible = true;
    area.AxisX.MajorGrid.Enabled = false;
    area.AxisX.IntervalOffset = 1;
    area.AxisX.LabelStyle.Format = "{#}jr";
    area.AxisX.MajorTickMark.Enabled = true;
    area.AxisX2.LineWidth = 1;
    area.AxisX2.LineColor = Color.Green;

    var legend = new Legend();
    legend.LegendStyle = LegendStyle.Row;
    legend.Docking = Docking.Bottom;
    legend.DockedToChartArea = area.Name;
    legend.Font = lettering;
    legend.IsDockedInsideChartArea = false;

    chart.ForeColor = defaultColor;
    chart.Font.Name = lettering.FontFamily.Name;
    chart.Font.Size = new System.Web.UI.WebControls.FontUnit(lettering.Size);
    chart.Width = 280;
    chart.Height = 180;
    chart.Legends.Add(legend);
    chart.ChartAreas.Add(area);
    chart.BorderlineColor = defaultColor;
    chart.BorderlineWidth = 1;
    chart.BorderlineDashStyle = ChartDashStyle.Solid;
    chart.Titles.Add(title);

    return chart;
}

public static void AddData(Chart chart, ChartInput input)
{
    var line = new Series(input.Subtitle);
    line.ChartArea = chart.ChartAreas[0].Name;
    line.ChartType = SeriesChartType.Spline;
    line.Color = input.Color;
    line.BorderWidth = 3;
    line.MarkerStyle = MarkerStyle.Circle;
    line.MarkerSize = 7;
    line.MarkerStep = 5;

    for (int i = 0; i < input.Waarden.Length; i++)
    {
        line.Points.AddXY(i, input.Values[i]);
    }

    chart.Series.Add(line);
}

グラフを作成した後、Aspose を使用して Word ドキュメントに挿入しますが、グラフの作成方法には関係ありません。

4

1 に答える 1

5

これは、x 値ごと、つまり年ごとにカスタム ラベルを追加することで可能になります。

Dim series1 As New Series("Series1")
series1.ChartType = SeriesChartType.Column

' Adding some points
series1.Points.AddXY(1, 1)
series1.Points.AddXY(2, 1)
series1.Points.AddXY(3, 1)

Chart1.Series.Add(series1)

' I manually set the maxium of the X axis
Chart1.ChartAreas("ChartArea1").AxisX.Interval = 1
Chart1.ChartAreas("ChartArea1").AxisX.Maximum = 4

Chart1.ChartAreas("ChartArea1").AxisX.CustomLabels.Add(0.5, 1.5, "yr1")
Chart1.ChartAreas("ChartArea1").AxisX.CustomLabels.Add(1.5, 2.5, "yr2")
Chart1.ChartAreas("ChartArea1").AxisX.CustomLabels.Add(2.5, 3.5, "yr3")

ポイントの x 値が「1」の場合、customlabel を「0.5」から「1.5」に追加する必要があります。そうすればきれいに中央に配置されます。

于 2013-10-15T14:42:41.663 に答える