博客 / 詳情

返回

Excel處理控件Aspose.Cells教程:使用C#在Excel中創建氣泡圖

多維數據可視化對於深入分析至關重要。氣泡圖允許您在單個圖表中顯示三個數據系列——X 軸、Y 軸和氣泡大小。在本指南中,您將學習如何使用 C# 和 Aspose.Cells for .NET 在 Excel 中創建氣泡圖。無論您需要展示銷售業績、市場份額還是科學數據,以下示例都將幫助您僅用幾行代碼即可生成專業且可直接導出的圖表。

Aspose.Cells官方試用版免費下載,請聯繫慧都科技

加入Aspose技術交流QQ羣(1041253375),與更多小夥伴一起探討提升開發技能。

用於創建氣泡圖的 C# Excel 庫

Aspose.Cells for .NET是一個功能強大的 Excel 自動化庫,可簡化圖表創建,包括氣泡圖。它提供豐富的 API,用於添加數據、配置圖表類型、自定義序列以及將工作簿導出為各種格式(XLSX、PDF、PNG 等)。

Aspose.Cells 的主要特性使其成為氣泡圖的理想之選:

  • 強大的類型安全 API – Visual Studio 中完全支持 IntelliSense。
  • 直接操作圖表——通過編程方式更改序列類型、標記大小、顏色和座標軸設置。
  • 高性能——處理大型數據集時不會產生額外的用户界面開銷。
  • 支持多種格式——保存為 XLSX、XLS、CSV、PDF、HTML 或圖像。

入門

  1. 慧都網Aspose.Cells頁面下載該庫。
  2. 從NuGet安裝
    PM> Install-Package Aspose.Cells
  3. Aspose.Cells在你的C#項目中添加對它的引用。

現在你已經可以通過編程方式創建氣泡圖了。

使用 C# 在 Excel 中創建氣泡圖

下面有兩個完整的、可運行的示例,説明如何從頭開始生成氣泡圖以及如何自定義其外觀。

示例 1 – 基本氣泡圖

此示例創建了一個簡單的氣泡圖,顯示產品銷售額(X 軸)、利潤率(Y 軸)和市場份額(氣泡大小)。

// ------------------------------------------------------------
// 1. Create a new workbook and obtain the first worksheet.
// ------------------------------------------------------------
var workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];

// ------------------------------------------------------------
// 2. Populate worksheet with sample data for the bubble chart.
// ------------------------------------------------------------
//    A       B        C        D
// 1  Product Sales   Profit   MarketShare
// 2  Product A   120      30       0.20
// 3  Product B   150      45       0.35
// 4  Product C   180      55       0.50
// ------------------------------------------------------------
sheet.Cells["A1"].PutValue("Product");
sheet.Cells["B1"].PutValue("Sales");
sheet.Cells["C1"].PutValue("Profit");
sheet.Cells["D1"].PutValue("MarketShare");

string[] products = { "Product A", "Product B", "Product C" };
double[] sales = { 120, 150, 180 };
double[] profit = { 30, 45, 55 };
double[] marketShare = { 0.20, 0.35, 0.50 };

for (int i = 0; i < products.Length; i++)
{
    int row = i + 1; // Excel rows are 0?based in the API
    sheet.Cells[row, 0].PutValue(products[i]);   // Column A
    sheet.Cells[row, 1].PutValue(sales[i]);      // Column B
    sheet.Cells[row, 2].PutValue(profit[i]);     // Column C
    sheet.Cells[row, 3].PutValue(marketShare[i]); // Column D
}

// ------------------------------------------------------------
// 3. Add a Bubble chart to the worksheet.
// ------------------------------------------------------------
int chartIndex = sheet.Charts.Add(ChartType.Bubble, 5, 0, 25, 15);
Chart bubbleChart = sheet.Charts[chartIndex];

bubbleChart.Title.Text = "Product Sales vs Profit (Bubble Size = Market Share)";
bubbleChart.ShowLegend = true;

// ------------------------------------------------------------
// 4. Define the data series for the Bubble chart.
// ------------------------------------------------------------

// Series 0 ¨C X values (Sales) ¨C Column B
int seriesIdx = bubbleChart.NSeries.Add("=Sheet1!$B$2:$B$4", true);

// Set Y values (Profit) ¨C Column C
bubbleChart.NSeries[seriesIdx].Values = "=Sheet1!$C$2:$C$4";

// Set Bubble Sizes ¨C Column D (must be a positive number)
bubbleChart.NSeries[seriesIdx].BubbleSizes = "=Sheet1!$D$2:$D$4";

bubbleChart.NSeries[seriesIdx].Name = "Products";

// ------------------------------------------------------------
// 5. Customize axes (optional).
// ------------------------------------------------------------
bubbleChart.CategoryAxis.Title.Text = "Sales";
bubbleChart.ValueAxis.Title.Text = "Profit";
bubbleChart.ValueAxis.MinValue = 0;
bubbleChart.ValueAxis.MaxValue = 100;

// ------------------------------------------------------------
// 6. Save the workbook to an XLSX file.
// ------------------------------------------------------------
workbook.Save("BubbleChart_Basic.xlsx");

代碼的作用

  1. 創建工作簿並填充示例數據。
  2. 添加ChartType.Bubble圖表。
  3. 將序列的 X 值、Y 值和氣泡大小與填充範圍關聯起來。
  4. (可選)設置座標軸標題和限制。
  5. 將工作簿保存為BubbleChart_Basic.xlsx

示例 2 – 自定義氣泡圖(顏色、標記樣式和輔助座標軸)

此示例演示了高級自定義功能,例如自定義氣泡顏色、邊框樣式,以及將圖表放置在輔助座標軸上以提高可讀性。

// ------------------------------------------------------------
// 1. Initialize workbook and worksheet.
// ------------------------------------------------------------
var wb = new Workbook();
var ws = wb.Worksheets[0];

// ------------------------------------------------------------
// 2. Insert data for two product groups.
// ------------------------------------------------------------
//    A         B        C        D        E        F
// 1  Category  Sales1   Profit1  Share1   Sales2   Profit2   Share2
// 2  Jan       80      20       0.15     65       30        0.10
// 3  Feb       95      35       0.25     70       40        0.20
// 4  Mar       110     50       0.30     85       55        0.35
// ------------------------------------------------------------
ws.Cells["A1"].PutValue("Month");
ws.Cells["B1"].PutValue("Sales Group 1");
ws.Cells["C1"].PutValue("Profit Group 1");
ws.Cells["D1"].PutValue("Share Group 1");
ws.Cells["E1"].PutValue("Sales Group 2");
ws.Cells["F1"].PutValue("Profit Group 2");
ws.Cells["G1"].PutValue("Share Group 2");

string[] months = { "Jan", "Feb", "Mar" };
double[] sales1 = { 80, 95, 110 };
double[] profit1 = { 20, 35, 50 };
double[] share1 = { 0.15, 0.25, 0.30 };

double[] sales2 = { 65, 70, 85 };
double[] profit2 = { 30, 40, 55 };
double[] share2 = { 0.10, 0.20, 0.35 };

for (int i = 0; i < months.Length; i++)
{
    int row = i + 1;
    ws.Cells[row, 0].PutValue(months[i]);     // A column
    ws.Cells[row, 1].PutValue(sales1[i]);     // B column
    ws.Cells[row, 2].PutValue(profit1[i]);    // C column
    ws.Cells[row, 3].PutValue(share1[i]);     // D column
    ws.Cells[row, 4].PutValue(sales2[i]);     // E column
    ws.Cells[row, 5].PutValue(profit2[i]);    // F column
    ws.Cells[row, 6].PutValue(share2[i]);     // G column
}

// ------------------------------------------------------------
// 3. Add a Bubble chart (combined for two groups).
// ------------------------------------------------------------
int chartIdx = ws.Charts.Add(ChartType.Bubble, 6, 0, 26, 15);
Chart bubbleChart = ws.Charts[chartIdx];
bubbleChart.Title.Text = "Quarterly Sales vs Profit (Bubble = Market Share)";
bubbleChart.ShowLegend = true;

// ------------------------------------------------------------
// 4. First series ¨C Group 1
// ------------------------------------------------------------
int series1 = bubbleChart.NSeries.Add("=Sheet1!$B$2:$B$4", true);
bubbleChart.NSeries[series1].Values = "=Sheet1!$C$2:$C$4";
bubbleChart.NSeries[series1].BubbleSizes = "=Sheet1!$D$2:$D$4";
bubbleChart.NSeries[series1].Name = "Group 1";

// Apply custom formatting to series 1 bubbles
bubbleChart.NSeries[series1].Marker.MarkerStyle = ChartMarkerType.Circle;
bubbleChart.NSeries[series1].Marker.MarkerSize = 12; // Size of marker (not bubble size)
bubbleChart.NSeries[series1].Marker.Area.Formatting = FormattingType.Custom;
bubbleChart.NSeries[series1].Marker.Area.ForegroundColor = Color.CornflowerBlue;
bubbleChart.NSeries[series1].Marker.Border.IsVisible = true;
bubbleChart.NSeries[series1].Marker.Border.Color = Color.DarkBlue;
bubbleChart.NSeries[series1].Marker.Border.Weight = WeightType.WideLine;

// ------------------------------------------------------------
// 5. Second series ¨C Group 2 (placed on secondary axis)
// ------------------------------------------------------------
int series2 = bubbleChart.NSeries.Add("=Sheet1!$E$2:$E$4", true);
bubbleChart.NSeries[series2].Values = "=Sheet1!$F$2:$F$4";
bubbleChart.NSeries[series2].BubbleSizes = "=Sheet1!$G$2:$G$4";
bubbleChart.NSeries[series2].Name = "Group 2";
bubbleChart.NSeries[series2].PlotOnSecondAxis = true; // Use secondary axis

// Custom style for series 2 bubbles
bubbleChart.NSeries[series2].Marker.MarkerStyle = ChartMarkerType.Square;
bubbleChart.NSeries[series2].Marker.MarkerSize = 12;
bubbleChart.NSeries[series2].Marker.Area.Formatting = FormattingType.Custom;
bubbleChart.NSeries[series2].Marker.Area.ForegroundColor = Color.IndianRed;
bubbleChart.NSeries[series2].Marker.Border.IsVisible = true;
bubbleChart.NSeries[series2].Marker.Border.Color = Color.Maroon;
bubbleChart.NSeries[series2].Marker.Border.Weight = WeightType.WideLine;

// ------------------------------------------------------------
// 6. Axis titles and formatting (optional)
// ------------------------------------------------------------
bubbleChart.CategoryAxis.Title.Text = "Sales";
bubbleChart.ValueAxis.Title.Text = "Profit";
bubbleChart.ValueAxis.MinValue = 0;
bubbleChart.ValueAxis.MaxValue = 120;

// Secondary axis ¨C make its title distinguishable
bubbleChart.SecondValueAxis.Title.Text = "Profit (Group 2)";
bubbleChart.SecondValueAxis.Title.Font.Color = Color.IndianRed;

// ------------------------------------------------------------
// 7. Save the workbook to XLSX and as PNG image (optional export)
// ------------------------------------------------------------
wb.Save("BubbleChart_Customized.xlsx");

// Export the chart area as an image (requires Aspose.Cells rendering license)
bubbleChart.ToImage("BubbleChart_Customized.png");

定製亮點

  • 兩組獨立的泡泡系列(第 1 組和第 2 組),顏色和標記形狀各不相同。
  • 第二組數據繪製在輔助座標軸上,當數據範圍不同時,這非常有用。
  • 自定義標記格式(填充顏色、邊框顏色、粗細)。
  • 可選擇將圖表導出為圖像,以便將其包含在報告或網頁中。

Aspose.Cells官方試用版免費下載,請聯繫慧都科技

加入Aspose技術交流QQ羣(1041253375),與更多小夥伴一起探討提升開發技能。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.