custom label on x-axis
我的图表预测了未来30年的价值。 第一个值必须显示为年1。然后是年5、10 ...直到30。但是内部第一年为0,并保留为:
我尝试添加自定义标签,但它只会破坏其他标签:
如果我将其添加到AxisX2而不是AxisX,它什么也不做。
这是制作图表并添加线条的代码:
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | 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文档中,但这与图形的制作方式无关。
通过为每个x值(每年)添加自定义标签,可以实现此目的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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'。 这样,它很好地居中。