2013/11/23追記
当時は、種類を混合したグラフ作成に苦労しましたが、Spreadsheet::WriteExcel の後継である Excel::Writer::XLSX なら add_chart() に subtypeを指定できるので、混合グラフも問題なく作成できそうです。
http://search.cpan.org/perldoc?Excel%3A%3AWriter%3A%3AXLSX
my $chart = $workbook->add_chart( type => 'bar', subtype => 'stacked' );
Spreadsheet::WriteExcelで積み上げ棒+折れ線グラフを表示したかったのですが、積み上げ棒までなら表示できたので、その方法を書き留めておきます。
Spreadsheet::WriteExcel ver.2.37では、7種類のグラフ出力に対応
http://search.cpan.org/perldoc?Spreadsheet::WriteExcel
Spreadsheet::WriteExcel ver.2.37では、棒グラフや折れ線グラフ等、7種類のグラフ出力に対応していますが、等高線やドーナツ等、対応できていないグラフもあります。
excelの対応グラフ一覧
Spreadsheet::WriteExcel ver.2.37の対応グラフ
- area(積上げ面)
- bar(集合横棒)
- column(縦棒)
- line(集合折れ線)
- pie(円)
- scatter(散布)
- stock(株価)
Spreadsheet::WriteExcel::Chart以下にサブクラスを作成して未対応グラフ表示
今回、Spreadsheet::WriteExcelで積上げ棒グラフを出力する必要がありましたが、次のurlを参考に Spreadsheet::WriteExcel::Chart::Column から、Spreadsheet::WriteExcel::Chart::Stacked クラスを作成しました。
※「参考に」と言っても、ほぼそのまま流用しています。
※実際の出力方法は、Spreadsheet::WriteExcelのsrcをご覧ください。
http://yassblog.blog.so-net.ne.jp/2010-08-02-1
package Spreadsheet::WriteExcel::Chart::Stacked; require Exporter; use strict; use Spreadsheet::WriteExcel::Chart; use vars qw($VERSION @ISA); @ISA = qw(Spreadsheet::WriteExcel::Chart Exporter); $VERSION = '2.37'; sub new { my $class = shift; my $self = Spreadsheet::WriteExcel::Chart->new( @_ ); bless $self, $class; return $self; } sub _store_chart_type { my $self = shift; my $record = 0x1017; # Record identifier.(棒グラフと同じ) my $length = 0x0006; # Number of bytes to follow. my $pcOverlap = 0xff9c; # Space between bars (-100%). my $pcGap = 0x0096; # Space between cats. my $grbit = 0x0002; # Option flags (bit1 indicates fStacked). my $header = pack 'vv', $record, $length; my $data = ''; $data .= pack 'v', $pcOverlap; $data .= pack 'v', $pcGap; $data .= pack 'v', $grbit; $self->_append( $header, $data ); } 1; __END__
http://www.wotsit.org/ では様々なfile仕様が掲載
先程の yassblog.blog.so-net.ne.jp によれば、
様々なファイル仕様が http://www.wotsit.org/ に掲載されています。
今回は時間がなかったので、詳しく読んでいませんが、本気で積み上げ棒+折れ線グラフを表示する際に役に立つかも。