チャートのカスタマイズ
チャートの作成
Aspose.Cellsでさまざまなチャートをスプレッドシートに追加できます。Aspose.Cellsは多くの柔軟なチャートオブジェクトを提供します。このトピックでは、Aspose.Cellsのチャートオブジェクトについて説明します。
単純なチャートの作成
Aspose.Cellsを使用して、次のような例コードで簡単にグラフを作成できます。
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the output directory. | |
Workbook workbook = new Workbook(); | |
// Obtaining the reference of the first worksheet | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
// Adding sample values to cells | |
worksheet.getCells().get("A2").putValue("Category1"); | |
worksheet.getCells().get("A3").putValue("Category2"); | |
worksheet.getCells().get("A4").putValue("Category3"); | |
worksheet.getCells().get("B1").putValue("Column1"); | |
worksheet.getCells().get("B2").putValue(4); | |
worksheet.getCells().get("B3").putValue(20); | |
worksheet.getCells().get("B4").putValue(50); | |
worksheet.getCells().get("C1").putValue("Column2"); | |
worksheet.getCells().get("C2").putValue(50); | |
worksheet.getCells().get("C3").putValue(100); | |
worksheet.getCells().get("C4").putValue(150); | |
// Adding a chart to the worksheet | |
int chartIndex = worksheet.getCharts().add(ChartType.COLUMN, 5, 0, 15, 5); | |
// Accessing the instance of the newly added chart | |
Chart chart = worksheet.getCharts().get(chartIndex); | |
// Setting chart data source as the range "A1:C4" | |
chart.setChartDataRange("A1:C4", true); | |
workbook.save( "ColumnChart.xlsx", SaveFormat.XLSX); |
グラフの作成に関する事項
Aspose.Cellsを使用してチャートを作成する際に役立ついくつかの基本的な概念を理解することが重要です。
チャートオブジェクト
Aspose.Cellsは、あらゆる種類のグラフを作成するために使用される特別なクラス群を提供しています。これらのクラスは グラフオブジェクト を作成するために使用され、グラフの構築ブロックとして機能します。以下にグラフオブジェクトがリストされています:
- Axis、グラフの軸。
- Chart 、単一のExcelグラフ。
- ChartArea、ワークシート内のグラフエリア。
- ChartDataTable、グラフデータテーブル。
- ChartFrame、グラフ内の枠オブジェクト。
- ChartPoint、グラフ内のシリーズ内の単一のポイント。
- ChartPointCollection、1つのシリーズ内のすべてのポイントを含むコレクション。
- ChartCollection、Chartのコレクション。
- DataLabels、指定された Series、ChartPoint、Trendline などのDataLabels。
- FillFormat、形状の塗りつぶし形式。
- Floor、3Dグラフの床。
- Legend、グラフの凡例。
- Line、グラフの線。
- SeriesCollection、Seriesのコレクション。
- Series、グラフ内の単一のデータ系列を表します。
- TickLabels、グラフ軸上の目盛りラベル。
- Title、グラフまたは軸のタイトル。
- Trendline、グラフ内のトレンドライン。
- TrendlineCollection、指定されたデータ系列のすべてのTrendlineオブジェクトのコレクション。
- Walls、3Dグラフの壁。
Chartingオブジェクトの使用
上記のように、すべてのチャートオブジェクトはそれぞれのクラスのインスタンスであり、特定のタスクを実行するための特定のプロパティとメソッドを提供します。チャートオブジェクトを使用して、チャートを作成します。
Aspose.CellsのChartCollectionコレクションを使用してワークシートに任意の種類のグラフを追加できます。ChartCollectionコレクション内の各アイテムはChartオブジェクトを表します。Chartオブジェクトは、グラフの外観をカスタマイズするために必要なグラフオブジェクトをカプセル化しています。次のセクションでは、いくつかの基本的なグラフオブジェクトを使用してシンプルなグラフを作成する方法を示します。
シンプルなグラフの作成
Aspose.Cellsを使用して様々な種類のグラフを作成することができます。Aspose.Cellsでサポートされているすべての標準グラフは、ChartTypeという列挙型で事前定義されています。事前定義されたグラフの種類は次のとおりです:
チャートの種類 | 説明 |
---|---|
Column | クラスター化された縦棒グラフを表します |
ColumnStacked | 積み上げ列チャートを表します。 |
Column100PercentStacked | 100% 積み上げ列チャートを表します。 |
Column3DClustered | 3D クラスタ化された列チャートを表します。 |
Column3DStacked | 3D 積み上げ列チャートを表します。 |
Column3D100PercentStacked | 3D 100% 積み上げ列チャートを表します。 |
Column3D | 3D 列チャートを表します。 |
Bar | クラスタ化された棒チャートを表します。 |
BarStacked | 積み上げ棒チャートを表します。 |
Bar100PercentStacked | 100% 積み上げ棒チャートを表します。 |
Bar3DClustered | 3D クラスタ化された棒チャートを表します。 |
Bar3DStacked | 3D 積み上げ棒チャートを表します。 |
Bar3D100PercentStacked | 3D 100% 積み上げ棒チャートを表します。 |
Line | 折れ線チャートを表します。 |
LineStacked | 積み上げ折れ線チャートを表します。 |
Line100PercentStacked | 100% 積み上げ折れ線チャートを表します。 |
LineWithDataMarkers | データマーカー付きの折れ線チャートを表します。 |
LineStackedWithDataMarkers | データマーカー付きの積み上げ折れ線チャートを表します。 |
Line100PercentStackedWithDataMarkers | データマーカー付きの100% 積み上げ折れ線チャートを表します。 |
Line3D | 3D 折れ線チャートを表します。 |
Pie | 円グラフを表します。 |
Pie3D | 3D 円グラフを表します。 |
PiePie | パイ オブ パイ チャートを表します。 |
PieExploded | 分解された円グラフを表します。 |
Pie3DExploded | 3Dエクスプロード円グラフを表します |
PieBar | パイチャートのバーを表します |
Scatter | 散布図を表します |
ScatterConnectedByCurvesWithDataMarker | 曲線で接続されたデータマーカー付きの散布図を表します |
ScatterConnectedByCurvesWithoutDataMarker | 曲線で接続された散布図を表します |
ScatterConnectedByLinesWithDataMarker | データマーカーを使用した線でつながる散布図を表します。 |
ScatterConnectedByLinesWithoutDataMarker | データマーカーを使用しない線でつながる散布図を表します。 |
Area | エリアチャートを表します |
AreaStacked | 積み上げエリアチャートを表します |
Area100PercentStacked | 100% 積み上げエリアチャートを表します |
Area3D | 3Dエリアチャートを表します |
Area3DStacked | 3D積み上げエリアチャートを表します |
Area3D100PercentStacked | 3D 100% 積み上げエリアチャートを表します |
Doughnut | ドーナツチャートを表します |
DoughnutExploded | 分裂したドーナツチャートを表します |
Radar | レーダーチャートを表します。 |
RadarWithDataMarkers | データマーカーを使用したレーダーチャートを表します。 |
RadarFilled | 塗りつぶしのレーダーチャートを表します |
Surface3D | 3Dサーフェスチャートを表します |
SurfaceWireframe3D | 3D ワイヤーフレーム 表面チャートを表します。 |
SurfaceContour | 等高線チャートを表します |
SurfaceContourWireframe | ワイヤーフレーム等高線チャートを表します |
Bubble | バブルチャートを表します |
Bubble3D | 3Dバブルチャートを表します |
Cylinder | シリンダーチャートを表します |
CylinderStacked | 積み上げシリンダーチャートを表します |
Cylinder100PercentStacked | 100% 積み上げシリンダーチャートを表します |
CylindricalBar | 円柱型棒グラフを表します。 |
CylindricalBarStacked | 積み上げ円柱型棒グラフを表します。 |
CylindricalBar100PercentStacked | 100% 積み上げ円柱型棒グラフを表します。 |
CylindricalColumn3D | 3D 円柱型柱グラフを表します。 |
Cone | 円錐チャートを表します |
ConeStacked | 積み重ね円錐チャートを表します |
Cone100PercentStacked | 100% 積み重ね円錐チャートを表します |
ConicalBar | 円錐バーチャートを表します |
ConicalBarStacked 積み重ね円錐バーチャートを表します | |
ConicalBar100PercentStacked | 100% 積み重ね円錐バーチャートを表します |
ConicalColumn3D | 3D円錐柱チャートを表します |
Pyramid | ピラミッドチャートを表します |
PyramidStacked | 積み重ねピラミッドチャートを表します |
Pyramid100PercentStacked | 100% 積み重ねピラミッドチャートを表します |
PyramidBar | ピラミッド棒グラフを表す |
PyramidBarStacked | 積み重ねピラミッドバーチャートを表します |
PyramidBar100PercentStacked | 100% 積み重ねピラミッドバーチャートを表します |
PyramidColumn3D | 3Dピラミッド柱チャートを表します |
Aspose.Cellsを使用してグラフを作成するには: |
- CellオブジェクトのsetValueメソッドを使用してワークシートセルにデータを追加します。 これはグラフのデータソースとして使用されます。
- ChartCollectionコレクションのaddメソッドを呼び出し、Worksheetオブジェクトにカプセル化されたワークシートにチャートを追加します。
- ChartType列挙型を使用してチャートのタイプを指定します。 たとえば、この例ではグラフの種類としてChartType.PYRAMID値を使用します。
- インデックスを渡してChartCollectionコレクションから新しいChartオブジェクトをアクセスします。
- Chartオブジェクトにカプセル化されたチャートの管理に使用できるいずれかのチャートオブジェクトを使用します。 以下の例では、SeriesCollectionチャートオブジェクトを使用して、チャートのデータソースを指定します。
チャートにソースデータを追加する場合、データソースはセルの範囲(“A1:C3"など)、非連続セルのシーケンス(“A1, A3, A5"など)、値のシーケンス(“1,2,3"など)のいずれかです。
これらの一般的な手順を使用すると、任意のタイプのチャートを作成できます。異なるチャートオブジェクトを使用して、異なるチャートを作成します。
例のコードを実行すると、以下に示すようにワークシートにピラミッドグラフが追加されます。
データソースを持つピラミッドグラフ
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(HowToCreatePyramidChart.class) + "charts/"; | |
// Instantiating a Workbook object | |
Workbook workbook = new Workbook(); | |
// Obtaining the reference of the first worksheet | |
WorksheetCollection worksheets = workbook.getWorksheets(); | |
Worksheet sheet = worksheets.get(0); | |
// Adding some sample value to cells | |
Cells cells = sheet.getCells(); | |
Cell cell = cells.get("A1"); | |
cell.setValue(50); | |
cell = cells.get("A2"); | |
cell.setValue(100); | |
cell = cells.get("A3"); | |
cell.setValue(150); | |
cell = cells.get("B1"); | |
cell.setValue(4); | |
cell = cells.get("B2"); | |
cell.setValue(20); | |
cell = cells.get("B3"); | |
cell.setValue(180); | |
cell = cells.get("C1"); | |
cell.setValue(320); | |
cell = cells.get("C2"); | |
cell.setValue(110); | |
cell = cells.get("C3"); | |
cell.setValue(180); | |
cell = cells.get("D1"); | |
cell.setValue(40); | |
cell = cells.get("D2"); | |
cell.setValue(120); | |
cell = cells.get("D3"); | |
cell.setValue(250); | |
ChartCollection charts = sheet.getCharts(); | |
// Adding a chart to the worksheet | |
int chartIndex = charts.add(ChartType.PYRAMID, 5, 0, 15, 5); | |
Chart chart = charts.get(chartIndex); | |
// Adding NSeries (chart data source) to the chart ranging from "A1" | |
// cell to "B3" | |
SeriesCollection serieses = chart.getNSeries(); | |
serieses.add("A1:B3", true); | |
// Saving the Excel file | |
workbook.save(dataDir + "HToCPyramidChart_out.xls"); | |
// Print message | |
System.out.println("Pyramid chart is successfully created."); |
バブルチャートを作成するには、ChartTypeをChartType.BUBBLEに設定する必要があり、BubbleSizes、Values、およびXValuesなどのいくつかの追加プロパティを適切に設定する必要があります。次のコードを実行すると、以下に示すようにワークシートにバブルチャートが追加されます。
データソースを持つバブルチャート
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(HowToCreateBubbleChart.class) + "charts/"; | |
// Instantiating a Workbook object | |
Workbook workbook = new Workbook(); | |
// Obtaining the reference of the first worksheet | |
WorksheetCollection worksheets = workbook.getWorksheets(); | |
Worksheet sheet = worksheets.get(0); | |
// Adding some sample value to cells | |
Cells cells = sheet.getCells(); | |
Cell cell = cells.get("A1"); | |
cell.setValue(50); | |
cell = cells.get("A2"); | |
cell.setValue(100); | |
cell = cells.get("A3"); | |
cell.setValue(150); | |
cell = cells.get("B1"); | |
cell.setValue(4); | |
cell = cells.get("B2"); | |
cell.setValue(20); | |
cell = cells.get("B3"); | |
cell.setValue(180); | |
cell = cells.get("C1"); | |
cell.setValue(320); | |
cell = cells.get("C2"); | |
cell.setValue(110); | |
cell = cells.get("C3"); | |
cell.setValue(180); | |
cell = cells.get("D1"); | |
cell.setValue(40); | |
cell = cells.get("D2"); | |
cell.setValue(120); | |
cell = cells.get("D3"); | |
cell.setValue(250); | |
ChartCollection charts = sheet.getCharts(); | |
// Adding a chart to the worksheet | |
int chartIndex = charts.add(ChartType.BUBBLE, 5, 0, 15, 5); | |
Chart chart = charts.get(chartIndex); | |
// Adding NSeries (chart data source) to the chart ranging from "A1" | |
// cell to "B3" | |
SeriesCollection serieses = chart.getNSeries(); | |
serieses.add("A1:B3", true); | |
// Set bubble sizes | |
chart.getNSeries().get(0).setBubbleSizes("B2:D2"); | |
chart.getNSeries().get(0).setXValues("B3:D3"); | |
chart.getNSeries().get(0).setValues("B1:D1"); | |
// Saving the Excel file | |
workbook.save(dataDir + "HToCrBChart_out.xls"); | |
// Print message | |
System.out.println("Bubble chart is successfully created."); |
データマーカー付きラインチャート
データマーカー付き折れ線グラフを作成するには、ChartTypeをChartType.LINE_WITH_DATA_MARKERSに設定し、背景エリア、シリーズマーカー、値、およびXValuesなどの追加プロパティを適切に設定する必要があります。次のコードを実行すると、以下に示すようにワークシートにデータマーカー付き折れ線グラフが追加されます。
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// Instantiate a workbook | |
Workbook workbook = new Workbook(); | |
// Access first worksheet | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
// Set columns title | |
worksheet.getCells().get(0, 0).setValue("X"); | |
worksheet.getCells().get(0, 1).setValue("Y"); | |
// Create random data and save in the cells | |
for (int i = 1; i < 21; i++) | |
{ | |
worksheet.getCells().get(i, 0).setValue(i); | |
worksheet.getCells().get(i, 1).setValue(0.8); | |
} | |
for (int i = 21; i < 41; i++) | |
{ | |
worksheet.getCells().get(i, 0).setValue(i - 20); | |
worksheet.getCells().get(i, 1).setValue(0.9); | |
} | |
// Add a chart to the worksheet | |
int idx = worksheet.getCharts().add(ChartType.LINE_WITH_DATA_MARKERS, 1, 3, 20, 20); | |
// Access the newly created chart | |
Chart chart = worksheet.getCharts().get(idx); | |
// Set chart style | |
chart.setStyle(3); | |
// Set autoscaling value to true | |
chart.setAutoScaling(true); | |
// Set foreground color white | |
chart.getPlotArea().getArea().setForegroundColor(Color.getWhite()); | |
// Set Properties of chart title | |
chart.getTitle().setText("Sample Chart"); | |
// Set chart type | |
chart.setType(ChartType.LINE_WITH_DATA_MARKERS); | |
// Set Properties of categoryaxis title | |
chart.getCategoryAxis().getTitle().setText("Units"); | |
//Set Properties of nseries | |
int s2_idx = chart.getNSeries().add("A2: A2", true); | |
int s3_idx = chart.getNSeries().add("A22: A22", true); | |
// Set IsColorVaried to true for varied points color | |
chart.getNSeries().setColorVaried(true); | |
// Set properties of background area and series markers | |
chart.getNSeries().get(s2_idx).getArea().setFormatting(FormattingType.CUSTOM); | |
chart.getNSeries().get(s2_idx).getMarker().getArea().setForegroundColor(Color.getYellow()); | |
chart.getNSeries().get(s2_idx).getMarker().getBorder().setVisible(false); | |
// Set X and Y values of series chart | |
chart.getNSeries().get(s2_idx).setXValues("A2: A21"); | |
chart.getNSeries().get(s2_idx).setValues("B2: B21"); | |
// Set properties of background area and series markers | |
chart.getNSeries().get(s3_idx).getArea().setFormatting(FormattingType.CUSTOM); | |
chart.getNSeries().get(s3_idx).getMarker().getArea().setForegroundColor(Color.getGreen()); | |
chart.getNSeries().get(s3_idx).getMarker().getBorder().setVisible(false); | |
// Set X and Y values of series chart | |
chart.getNSeries().get(s3_idx).setXValues("A22: A41"); | |
chart.getNSeries().get(s3_idx).setValues("B22: B41"); | |
// Save the workbook | |
workbook.save(outDir + "LineWithDataMarkerChart.xlsx", SaveFormat.XLSX); |
カスタムチャートの作成
これまでに、標準のフォーマット設定を持つ標準のチャートを見てきました。データソースを定義し、いくつかのプロパティを設定すると、デフォルトのフォーマット設定でグラフが作成されます。しかし、Aspose.Cellsは開発者が独自のフォーマット設定でグラフを作成できるカスタムチャートもサポートしています。
カスタムチャートの作成
開発者は、Aspose.CellsのシンプルなAPIを使用して実行時にカスタムチャートを作成できます。
チャートはデータシリーズで構成されています。Aspose.Cellsの各データシリーズはSeriesオブジェクトで表され、SeriesCollectionオブジェクトはSeriesオブジェクトのコレクションとして機能します。カスタムチャートの作成時、開発者は異なるタイプのチャートを異なるデータシリーズ(SeriesCollectionオブジェクトで収集)に使用する自由があります。
以下の例コードは、カスタムチャートの作成方法を示しています。この例では、最初のデータ系列には列チャートを使用し、2番目のデータ系列には折れ線グラフを使用しています。その結果、ワークシートには列チャートと折れ線グラフが組み合わされたチャートが追加されます。
カラムとラインチャートを組み合わせたカスタムチャート
プログラミング例
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(HowToCreateCustomChart.class) + "charts/"; | |
// Instantiating a Workbook object | |
Workbook workbook = new Workbook(); | |
// Obtaining the reference of the first worksheet | |
WorksheetCollection worksheets = workbook.getWorksheets(); | |
Worksheet sheet = worksheets.get(0); | |
// Adding some sample value to cells | |
Cells cells = sheet.getCells(); | |
Cell cell = cells.get("A1"); | |
cell.setValue(50); | |
cell = cells.get("A2"); | |
cell.setValue(100); | |
cell = cells.get("A3"); | |
cell.setValue(150); | |
cell = cells.get("B1"); | |
cell.setValue(4); | |
cell = cells.get("B2"); | |
cell.setValue(20); | |
cell = cells.get("B3"); | |
cell.setValue(180); | |
cell = cells.get("C1"); | |
cell.setValue(320); | |
cell = cells.get("C2"); | |
cell.setValue(110); | |
cell = cells.get("C3"); | |
cell.setValue(180); | |
cell = cells.get("D1"); | |
cell.setValue(40); | |
cell = cells.get("D2"); | |
cell.setValue(120); | |
cell = cells.get("D3"); | |
cell.setValue(250); | |
ChartCollection charts = sheet.getCharts(); | |
// Adding a chart to the worksheet | |
int chartIndex = charts.add(ChartType.COLUMN, 5, 0, 15, 5); | |
Chart chart = charts.get(chartIndex); | |
// Set data range | |
chart.setChartDataRange("A1:B3", true); | |
// Set the chart type for Series[0] | |
chart.getNSeries().get(0).setType(ChartType.LINE); | |
// Saving the Excel file | |
workbook.save(filePath + "HTCCustomChart_out.xlsx"); | |
// Print message | |
System.out.println("Customized chart is successfully created."); |