在進行圖表分析的時候,我們可能需要在一張圖表呈現兩個或多個樣式的圖表,以便更加清晰、直覺地檢視不同的資料大小和變化趨勢。在這篇文章中,我将分享C#中如何在一張圖表中建立不同的圖表類型,其中包括如何在同一個圖表添加第二個軸。
下面是一個簡單的excel工作表,可以看到系列3資料不同于系列1和2,這樣我們就可以繪制不同的圖表類型和不同的坐标軸來表示變化的資料:
代碼片段:
步驟1:建立一個Workbook類的對象并加載要建立圖表的excel檔案。
Workbook workbook = new Workbook();
workbook.LoadFromFile(@"E:\Visual Studio\Sample\Book1.xlsx");
步驟2:擷取工作薄的第一個工作表。
Worksheet sheet=workbook.Worksheets[0];
步驟3:工作表中添加圖表,并将A1到D5的資料設定為圖表的資料源。
Chart chart = sheet.Charts.Add();
chart.DataRange = sheet.Range["A1:D5"];
chart.SeriesDataFromRange = false;
步驟4:設定圖表位置。
chart.LeftColumn = 6;
chart.TopRow = 1;
chart.RightColumn = 12;
chart.BottomRow = 13;
步驟5:系列1和2中運用柱狀圖,系列3運用折線圖。
var cs1 = (ChartSerie)chart.Series[0];
cs1.SerieType = ExcelChartType.ColumnClustered;
var cs2 = (ChartSerie)chart.Series[1];
cs2.SerieType = ExcelChartType.ColumnClustered;
var cs3 = (ChartSerie)chart.Series[2];
cs3.SerieType = ExcelChartType.LineMarkers;
步驟6:圖表中再添加一個軸,繪制出系列3的資料.
chart.SecondaryCategoryAxis.IsMaxCross = true;
cs3.UsePrimaryAxis = false;
步驟7:儲存并運作檔案。
workbook.SaveToFile("result.xlsx");
System.Diagnostics.Process.Start("result.xlsx");
這是混合型圖表的效果圖:
全部代碼:
Workbook workbook = new Workbook();
workbook.LoadFromFile(@"E:\Visual Studio\Sample\Book1.xlsx");
Worksheet sheet = workbook.Worksheets[0];
//工作表中添加圖表并将其資料設定為圖表的資料源
Chart chart = sheet.Charts.Add();
chart.DataRange = sheet.Range["A1:D5"];
chart.SeriesDataFromRange = false;
//設定圖表位置
chart.LeftColumn = 6;
chart.TopRow = 1;
chart.RightColumn = 12;
chart.BottomRow = 13;
//根據系列運用不同的圖表類型
var cs1 = (ChartSerie)chart.Series[0];
cs1.SerieType = ExcelChartType.ColumnClustered;
var cs2 = (ChartSerie)chart.Series[1];
cs2.SerieType = ExcelChartType.ColumnClustered;
var cs3 = (ChartSerie)chart.Series[2];
cs3.SerieType = ExcelChartType.LineMarkers;
//再添加一個軸
chart.SecondaryCategoryAxis.IsMaxCross = true;
cs3.UsePrimaryAxis = false;
//儲存并運作檔案
workbook.SaveToFile("result.xlsx");
System.Diagnostics.Process.Start("result.xlsx");
在上面的示例中我使用的是
Free Spire.XLS,上面工作表的資料你可以根據你的需求改動,步驟比較簡單,可以嘗試運作一下。而之前我也寫過如何在excel表格添加趨勢線,誤差線等文章,有需要的朋友也可以參考。謝謝浏覽!