今回は1個のチャート上に「Bar Chart:棒グラフ」「Line Chart:線グラフ」「Area Chart:面グラフ」を持つ様にしたいと思います。
本の紹介では...
PHP8の基本構文から、クラス、DB連携、セキュリティ対策まで、しっかり習得。
PHPプログラミングの標準教科書『独習PHP』が、最新のPHP8に対応。
PHPでWebページ/アプリケーションを開発する際に必要な基礎的な知識、
PHPの基本構文から、クラス、データベース連携、セキュリティまで、詳細かつ丁寧に解説します。
...
■「Bar Chart:棒グラフ」「Line Chart:線グラフ」「Area Chart:面グラフ」を持つチャートを作成
商品1~3をそれぞれ「Bar Chart:棒グラフ」「Line Chart:線グラフ」「Area Chart:面グラフ」で表示します。
商品1~3毎に PHPExcel_Chart_DataSeries クラスでチャート・データシリーズの生成を行います。
この時それぞれ別に PHPExcel_Chart_DataSeriesValues クラスで描画データの指定の配列を生成しておきます。
プロットエリアオブジェクト生成に、商品1~3のチャート・データシリーズを配列にして指定します。 その後、このプロットエリアオブジェクトをチャート生成時に指定すれば3個のグラフを指定したことになります。
その他の処理は今までのものとさほど変わりがありません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | <?php // ライブラリ読込 require_once './PHPExcel-1.8/Classes/PHPExcel.php' ; // PHPExcelオブジェクト作成 $objPHPExcel = new PHPExcel(); // ワークシートオブジェクト取得 $objWorksheet = $objPHPExcel ->getActiveSheet(); // チャート用テストデータ生成 $objWorksheet ->fromArray( array ( array ( '売上' , '商品1' , '商品2' , '商品3' ), array ( 2016, 12, 18, 15), array ( 2017, 15, 19, 10), array ( 2018, 21, 23, 20), array ( 2019, 18, 14, 12), array ( 2020, 20, 21, 23), ) ); // 系列ラベルの指定 $arrDataSeriesLabels1 = array ( new PHPExcel_Chart_DataSeriesValues( 'String' , 'Worksheet!$B$1' , NULL, 1), //商品1 ); $arrDataSeriesLabels2 = array ( new PHPExcel_Chart_DataSeriesValues( 'String' , 'Worksheet!$C$1' , NULL, 1), //商品2 ); $arrDataSeriesLabels3 = array ( new PHPExcel_Chart_DataSeriesValues( 'String' , 'Worksheet!$D$1' , NULL, 1), //商品3 ); // X軸ラベルの指定 $arrCategorysDataSeries = array ( new PHPExcel_Chart_DataSeriesValues( 'String' , 'Worksheet!$A$2:$A$6' , NULL, 5), //2016 to 2020 ); // 商品1:描画データの指定 $arrDataSeriesValues1 = array ( new PHPExcel_Chart_DataSeriesValues( 'Number' , 'Worksheet!$B$2:$B$6' , NULL, 5), //商品1 ); // 商品1:チャート・データシリーズの生成 $objSeries1 = new PHPExcel_Chart_DataSeries( PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType PHPExcel_Chart_DataSeries::GROUPING_CLUSTERED, // plotGrouping range(0, count ( $arrDataSeriesValues1 ) - 1), // plotOrder $arrDataSeriesLabels1 , // plotLabel $arrCategorysDataSeries , // plotCategory $arrDataSeriesValues1 // plotValues ); // 商品2:描画データの指定 $arrDataSeriesValues2 = array ( new PHPExcel_Chart_DataSeriesValues( 'Number' , 'Worksheet!$C$2:$C$6' , NULL, 5), //商品2 ); // 商品2:チャート・データシリーズの生成 $objSeries2 = new PHPExcel_Chart_DataSeries( PHPExcel_Chart_DataSeries::TYPE_LINECHART, // plotType PHPExcel_Chart_DataSeries::GROUPING_STANDARD, // plotGrouping range(0, count ( $arrDataSeriesValues2 ) - 1), // plotOrder $arrDataSeriesLabels2 , // plotLabel $arrCategorysDataSeries , // plotCategory $arrDataSeriesValues2 // plotValues ); // 商品3:描画データの指定 $arrDataSeriesValues3 = array ( new PHPExcel_Chart_DataSeriesValues( 'Number' , 'Worksheet!$D$2:$D$6' , NULL, 5), //商品3 ); // 商品3:チャート・データシリーズの生成 $objSeries3 = new PHPExcel_Chart_DataSeries( PHPExcel_Chart_DataSeries::TYPE_AREACHART, // plotType PHPExcel_Chart_DataSeries::GROUPING_STANDARD, // plotGrouping range(0, count ( $arrDataSeriesValues3 ) - 1), // plotOrder $arrDataSeriesLabels3 , // plotLabel $arrCategorysDataSeries , // plotCategory $arrDataSeriesValues3 // plotValues ); // プロットエリアにチャート・データシリーズに設定 $objPlotArea = new PHPExcel_Chart_PlotArea(NULL, array ( $objSeries1 , $objSeries2 , $objSeries3 )); // レジェンド生成(各折れ線の説明を行う) $objLegend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_TOPRIGHT, NULL, false); // チャート・タイトル生成 $objTitle = new PHPExcel_Chart_Title( '3種類-Chart' ); // チャート生成 $objChart = new PHPExcel_Chart( 'chart1' , // name $objTitle , // title $objLegend , // legend $objPlotArea , // plotArea TRUE, // plotVisibleOnly 0, // displayBlanksAs NULL, // xAxisLabel NULL // yAxisLabel ); // ワークシート内のチャート位置設定 $objChart ->setTopLeftPosition( 'A8' ); // 左上 $objChart ->setBottomRightPosition( 'G20' ); // 右下 // ワークシートにチャート追加 $objWorksheet ->addChart( $objChart ); // [test-g-4-1.xlsx]:Excel2007形式で保存する $objWriter = PHPExcel_IOFactory::createWriter( $objPHPExcel , "Excel2007" ); $objWriter ->setIncludeCharts(TRUE); $objWriter ->save( 'test-g-4-1.xlsx' ); exit (); ?> |
出力されたエクセルファイルを見てみると以下の様になります。
(1個のチャート上に3種類のタイプのグラフが生成されています。)
関連する記事
⇒PHP PHPExcel ワークシート上にチャート(グラフ)を作成する方法について(PHPExcel_Chart)⇒PHP PHPExcel_Chart ワークシート上にチャート(Bar Chart:棒グラフ)を作成する方法について
⇒PHP PHPExcel_Chart ワークシート上にチャート(Bar Chart:棒グラフ、複数レベルの項目軸ラベル)を作成する方法について
⇒PHP PHPExcel_Chart 1個のチャート上に異なるタイプのグラフ(Bar Chart:棒グラフ、Line Chart:線グラフ、Area Chart:面グラフ)を作成する方法について
⇒PHP PHPExcel_Chart エクセルシート上に複数のチャートで異なるタイプのグラフ(Bar Chart:棒グラフ、Line Chart:線グラフ、Area Chart:面グラフ)を作成する方法について
⇒PHP PHPExcel_Chart ワークシート上に円グラフ・チャート(Pie Chart)とドーナツグラフ・チャート(Donut Chart)、及びレーダーチャート(Radar Chart)を作成する方法について
⇒PHP PHPExcel_Chart ワークシートにチャートが存在するエクセルファイル(テンプレート)の系列データ部分を変更し別のファイルとして登録する方法について
⇒PHP PHPExcel_Chart ワークシート上のチャートの軸の値の書式を設定する方法について
ショッピングサイト一通りを最初から自分で作ってみることで、PHPでのシステム開発を学べる入門書です。
コメント