チャートデータのフィルタリングの3つの方法
1. チャートからシリーズをフィルタリングする
Excelでチャートからシリーズをフィルタリングする手順
Excelでは、特定のシリーズをチャートからフィルタリングして、フィルタリングされたシリーズをチャートに表示されないようにすることができます。元のチャートは図1に表示されます。ただし、Testseries2とTestseries4をフィルタリングすると、図2に示すようにチャートが表示されます。
Aspose.Cellsでは同様の操作を実行することができます。次のようなサンプルファイルについて、例えばTestseries2とTestseries4をフィルタリングしたい場合、次のコードを実行できます。さらに、選択されたシリーズをすべて格納するNSeriesリストと、フィルタリングされたシリーズを格納するFilteredNSeriesが2つあります。
コードで**chart.NSeries[0].IsFiltered = true;を設定すると、NSeriesの最初のシリーズが削除され、適切な位置にFilteredNSeriesに配置されます。その後、以前のNSeries[1]は新しい最初のアイテムとなり、その後ろの全てのシリーズは1つ前にシフトされます。つまり、次にchart.NSeries[1].IsFiltered = true;**を実行すると、実質的に元の3番目のシリーズが削除されます。これは、混乱を招くことがあるため、コードで操作に従うことをお勧めします。
サンプルコード
次のサンプルコードは、サンプルExcelファイルを読み込みます。
// Create an instance of existing Workbook | |
Workbook workbook = new Workbook("seriesFiltered.xlsx"); | |
// Get filtered series list | |
SeriesCollection nSeriesFiltered = workbook.Worksheets[0].Charts["Chart 1"].FilteredNSeries; | |
// Get selected series list | |
SeriesCollection nSeries = workbook.Worksheets[0].Charts["Chart 1"].NSeries; | |
// Should be 0 | |
Console.WriteLine("Filtered Series count" + nSeriesFiltered.Count); | |
// Should be 6 | |
Console.WriteLine("Visiable Series count" + nSeries.Count); | |
// Process from the end to the beginning | |
nSeries[1].IsFiltered = true; | |
nSeries[0].IsFiltered = true; | |
// Should be 2 | |
Console.WriteLine("Filtered Series count" + nSeriesFiltered.Count); | |
// Should be 4 | |
Console.WriteLine("Visiable Series count" + nSeries.Count); | |
workbook.Save("seriesFiltered-out.xlsx"); | |
workbook = new Workbook("seriesFiltered-out.xlsx"); | |
// Should be 2 | |
Console.WriteLine("Filtered Series count" + nSeriesFiltered.Count); | |
// Should be 4 | |
Console.WriteLine("Visiable Series count" + nSeries.Count); |
2. データをフィルターし、グラフを変更します
データをフィルターすることは、多くのデータを持つチャートのフィルターを処理する良い方法です。 データをフィルターすると、グラフが変わります。 対処する問題の1つは、チャートが画面に残るようにすることです。 データをフィルターすると、非表示の行が表示され、時々チャートがその非表示の行に含まれることがあります。
Excelでチャートを変更するデータフィルターの使用手順
- データ範囲の内側をクリックします。
- データ タブをクリックし、フィルターを選択してフィルターをオンにします。 ヘッダー行にはドロップダウン矢印が表示されます。
- 挿入 タブに移動し、列のチャートを選択して、チャートを作成します。
- 今、データをドロップダウン矢印を使用してフィルタリングします。 チャートフィルターは使用しないでください。
サンプルコード
以下のサンプルコードは、Aspose.Cellsを使用して同じ機能を示しています。
// Create an instance of Workbook | |
Workbook workbook = new Workbook(); | |
// Get the First sheet. | |
Worksheet sheet = workbook.Worksheets["Sheet1"]; | |
// Add data into details cells. | |
sheet.Cells[0, 0].PutValue("Fruits Name"); | |
sheet.Cells[0, 1].PutValue("Fruits Price"); | |
sheet.Cells[1, 0].PutValue("Apples"); | |
sheet.Cells[2, 0].PutValue("Bananas"); | |
sheet.Cells[3, 0].PutValue("Grapes"); | |
sheet.Cells[4, 0].PutValue("Oranges"); | |
sheet.Cells[1, 1].PutValue(5); | |
sheet.Cells[2, 1].PutValue(2); | |
sheet.Cells[3, 1].PutValue(1); | |
sheet.Cells[4, 1].PutValue(4); | |
// Add a chart to the worksheet | |
int chartIndex = sheet.Charts.Add(Aspose.Cells.Charts.ChartType.Column, 7, 7, 15, 15); | |
// Access the instance of the newly added chart | |
Aspose.Cells.Charts.Chart chart = sheet.Charts[chartIndex]; | |
// Set data range | |
chart.SetChartDataRange("A1:B5", true); | |
// Set AutoFilter range | |
sheet.AutoFilter.Range = "A1:B5"; | |
// Add filters for a filter column. | |
sheet.AutoFilter.AddFilter(0, "Bananas"); | |
sheet.AutoFilter.AddFilter(0, "Oranges"); | |
// Apply the filters | |
sheet.AutoFilter.Refresh(); | |
chart.ToImage("Autofilter.png"); | |
workbook.Save("Autofilter.xlsx"); |
3. テーブルを使用してデータをフィルターし、グラフを変更します
テーブルを使用することは、範囲を使用する方法2と似ていますが、テーブルには範囲よりも優れた点があります。 テーブルに範囲を変更してデータを追加すると、チャートが自動的に更新されます。 範囲の場合、データソースを変更する必要があります。
Excelでテーブルとしてフォーマット
データ内をクリックし、CTRL + T を使用するか、ホーム タブ、テーブルの書式設定 を使用します。
サンプルコード
次のサンプルコードは、サンプルExcelファイル を使用して、Aspose.Cellsを使用して同じ機能を示しています。
// Create a workbook. | |
Workbook workbook = new Workbook("TableFilters.xlsx"); | |
// Access first worksheet | |
Worksheet sheet = workbook.Worksheets[0]; | |
// Access the instance of the newly added chart | |
int chartIndex = sheet.Charts.Add(Aspose.Cells.Charts.ChartType.Column, 7, 7, 15, 15); | |
Aspose.Cells.Charts.Chart chart = sheet.Charts[chartIndex]; | |
// Set data range | |
chart.SetChartDataRange("A1:B7", true); | |
// Convert the chart to image | |
chart.ToImage("TableFilters.before.png"); | |
// Add a new List Object to the worksheet | |
Aspose.Cells.Tables.ListObject listObject = sheet.ListObjects[sheet.ListObjects.Add("A1", "B7", true)]; | |
// Add default style to the table | |
listObject.TableStyleType = Aspose.Cells.Tables.TableStyleType.TableStyleMedium10; | |
// Show Total | |
listObject.ShowTotals = false; | |
// Add filters for a filter column. | |
listObject.AutoFilter.AddFilter(0, "James"); | |
// Apply the filters | |
listObject.AutoFilter.Refresh(); | |
//After adding new value the chart will change | |
listObject.PutCellValue(7, 0, "Me"); | |
listObject.PutCellValue(7, 1, 1000); | |
// Check the changed images | |
chart.ToImage("TableFilters.after.png"); | |
// Saving the Excel file | |
workbook.Save("TableFilter.out.xlsx"); |