簡體   English   中英

MigraDoc圖表中數據值的不同顏色

[英]Different colors for data values in MigraDoc chart

我在C#應用程序中使用MigraDoc創建了以下圖表:

Chart chart = new Chart(ChartType.Bar2D);
chart.Width = "10cm";
chart.Height = "10cm";
Series series = chart.SeriesCollection.AddSeries();
series.Add(new double[] { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 });
XSeries xseries = chart.XValues.AddXSeries();
xseries.Add("A", "B", "C", "D", "E", "F", "G", "H", "I", "J");
chart.XAxis.MajorTickMark = TickMarkType.Outside;
chart.XAxis.Title.Caption = "X-Axis";
chart.YAxis.MajorTickMark = TickMarkType.Outside;
chart.YAxis.HasMajorGridlines = true;
chart.PlotArea.LineFormat.Color = Colors.AliceBlue;
chart.PlotArea.LineFormat.Width = 1;
chart.PlotArea.LineFormat.Visible = true;
MigraDocObject.Add(chart);

現在可以說,我想在酒吧一個Colors.AliceBlue和酒吧的B Colors.DarkGray 我該怎么做? 是否可以通過官方API? 還是我必須破解MigraDoc?

我的解決方案:

Series series = chart.SeriesCollection.AddSeries();
series.Add(new double[] { 3, 10, 10, 150, 7, 192, 6 });
var elements = series.Elements.Cast<MigraDoc.DocumentObjectModel.Shapes.Charts.Point>().ToArray();
elements[0].FillFormat.Color = Colors.Chartreuse;
elements[3].FillFormat.Color = Colors.DeepSkyBlue;

我能想到的唯一方法是為每個要用不同顏色着色的條形設置不同的系列。 您將不得不改變自己的價值觀,並且幾乎覆蓋所有酒吧。

Series seriesA = chart.SeriesCollection.AddSeries();
seriesA.Add(new double[] { 10, 0, 0, 0, 0, 0, 0, 0, 0, 0 });
seriesA.FillFormat.Color = Colors.AliceBlue;

Series seriesB = chart.SeriesCollection.AddSeries();
seriesB.Add(new double[] { 0, 20, 0, 0, 0, 0, 0, 0, 0, 0 });
seriesB.FillFormat.Color = Colors.DarkGray;

Series seriesC = chart.SeriesCollection.AddSeries();
seriesC.Add(new double[] { 0, 0, 30, 0, 0, 0, 0, 0, 0, 0 });
seriesC.FillFormat.Color = Colors.Red;

只需確保每個新系列都引用您的同一圖表對象即可。 如果可以提供幫助,請確保將您的序列轉為HasDataLabel = false,以免序列值相互重疊。

根據圖表的大小和復雜程度,這應該很容易復制/粘貼到圖表中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM