hirax.net::Keywords::「チャート」のブログ



2010-07-02[n年前へ]

エクセル2003(以前のバージョンも?)のグラフを綺麗にするアプリを作りました。 

 (既存のアドインやカスタマイズ方法の自由度や品質に満足できなかったので)Windows版 Excel 2003(以前のバージョンも?)のグラフを綺麗にするアプリを作ってみました。VBAを使えばもっと簡単に書けるのだろうなぁ、と思いつつC++で組んでしまいました。動作の仕組みは、エクセルのブックが保持しているカラーパレットの空き領域に対して、チャートで使う色を(それぞれのインデックスに対して)割り当てて、チャートの各領域の色にインデックスカラーを指定する、という具合です。そのような動作なので、近似色が使われることによる不自然さなどが生じることはありません。とても滑らかな綺麗なチャートを、Excelで一瞬で作り上げることができます。

 作ってみたアルファ版を、ここ(ExcelColorChanger2003.zip)に置いておきます。(Excel 2007,2010では動かないと思いますが、)もしも、Excel 2000などで動くことを確認した方がいらっしゃいましたら、教えて頂ければ幸いです。ソースコードなどは、いずれ公開する予定です。



 このアプリケーションを使うと、開かれているエクセルの中のチャート(複数のチャートがあれば、一番最初に作成したもの)を、等高面グラフや濃度グラフを、スペクトルカラー風にしてみたり、炎風の色表現にしてみたり、青→赤の色表現にしてみたり、と色々なことができます。…あるいは、Bitmapファイルを適当に作ってやれば、左端がグラフ中の下端の色として扱われ、一番右端の色が上端の色として使われたグラフに変えることができます。つまり、自由自在にチャートの色を簡単にカスタマイズすることができます。しかも、縦軸の最大・最小・分割幅なども設定することができるようになっています。

そのサンプル画面が下になります。上段の3つが、このアプリケーションが標準で備えているグラデーションパターンで、左下がExcelの標準そのままで作ったものになります。ちなみに、右下が、今回作ったアプリケーションです。

 ちなみに、今回作成したアプリケーションでは、チャートの縦軸分割数が24個以上あるものに関しては、24個までしか処理を行わないようになっています。Excel2003, 2007向けバージョンについては、今夜にでも、また別途作ってみようと考えています。

 綺麗な(チャート向け)グラデーション用画像を作成した方がいらっしゃれば、送付して頂ければ幸いです。また、何か追加機能などありましたら、教えて頂ければうれしく思います。

エクセル2003(以前のバージョンも?)のグラフを綺麗にするアプリを作りました。エクセル2003(以前のバージョンも?)のグラフを綺麗にするアプリを作りました。






2010-07-03[n年前へ]

エクセル 2010のグラフを綺麗にするRubyスクリプトを作る 

 先日、エクセル2003のグラフを綺麗にするアプリを作りました。しかし、Excel 2010に対して動かしてみると、どうしてもエラーが出てしまうのです。そこで、今日は、Borland C++ Builder 6.0でコードを書くのは止めて、とりあえず、Rubyでエクセル2010のグラフを綺麗にするスクリプトのスケルトンを書いてみました。その実行結果例が下に張り付けたものになります。透明度も調整できますし、近似色が使われることもなく、なかなか良い感じです。

あとは、このスクリプトに機能追加&EXE化を行った上で、色指定などを行うインターフェースから適当にその実行ファイルを読んでやれば良さそうです。そういった辺りは、また後程してみようと思います。

 ちなみに、Rubyスクリプトの主要部(を簡単に示したもの)はこのような具合になります。オブジェクトの親子関係が入り混じっている箇所に、少し惑いました(LegendKey経由になっているのも、そんな戸惑いの影響になります)。

excel=WIN32OLE::connect("Excel.Application")
chart=excel.ActiveChart
legend=chart.Legend
count=legend.LegendEntries.Count
count.times do |i|
  entry=legend.LegendEntries(i+1)
  fill=entry.LegendKey.Format.Fill
  fill.ForeColor.RGB=255*i/(count-1)+
                          0*256+
                          255*(count-1-i)/(count-1)*
			  256*256
  fill.Transparency=TRANSPARENCY
  fill.Solid
end

エクセル 2010のグラフを綺麗にするRubyスクリプトを作るエクセル 2010のグラフを綺麗にするRubyスクリプトを作る






2010-07-04[n年前へ]

Excel 2010のチャートを綺麗な色で仕上げるアプリ作りました。 

 というわけで、Excel 2010のチャートを綺麗な色で仕上げるアプリソフトを作ってみました。VBAを使えば簡単な作業でしょうがC++とRubyを使って作ってみました。まずは、GUIラッパーが必要ファイルを作成した上で(RubyスクリプトをEXE化した)コマンドラインアプリケーションを呼び出し、そのコマンドラインアプリケーションがExcel 2010のチャートを操作する、という具合の動き方になっています。作ったアプリケーション ExcelColorChnager2010.exe (および必要ファイル)は、ここにExcelColorChanger2010.zipとして置いておきます

 適当に書いことに加え、Excel 2010 for Windos以外、たとえば、excel 2007で動くのか?といったことは調べていない状態ですが、とりあえず一回手から放してみることにします。

 ちなみに、(内部的に使われる)コマンドラインアプリケーションのexcel2010.exeは、

excel2010.exe 0 200 10 0.5
などとコマンドラインから実行するなり・呼ぶなりすることで、縦軸最小値・縦軸最大値・縦軸刻み幅・グラフ面の透明度、というようにExcelのアクティブなチャートを設定することができます。

Excel 2010のチャートを綺麗な色で仕上げるアプリ仕立てました。■Excel 2010のチャートを綺麗な色で仕上げるアプリ仕立てました。






2010-07-14[n年前へ]

フルカラー・アナグリフでエクセルのチャート(グラフ)を自然に立体視させるためのコツ 

 暑さをジワジワと感じ始める今頃、いつもエクセル・シミュレーション実習講習会の手伝いをしています。そういうこともあって、この時期、たとえば7月14日に書いた過去記事を眺めてみると、そんな実習講習会の風景や、エクセルの動作・機能・実装を確認しておくために、調査や小ネタ作成などをしていたことを、改めて気づかされます。

 実習講習会は、今回で7年目になります。京都でも一回やりますから、回数でいえば8回やったということで、色々なバージョンのエクセルをそれぞれ独自の使い方をする方々を眺めてきました。当然、日本語ネイティブの人ばかりではありませんから、英語版はもちろん韓国語版やその他の国版のエクセルを使い、それぞれの国の言葉のダイアログ(表現)を眺め、既視感はありつつも実に新鮮な感覚に襲われたりします。

 今年は、昼休みの休憩時間に、自分の実験も兼ねて「エクセルのチャート(グラフ)を赤青(赤シアン)メガネのアナグリフを使うことで、エクセルのチャートを立体的にグリグリ眺めてみよう」という余興(予備実験)をしてみました。参加者やスタッフに赤青(赤シアン)メガネを配り、スクリーンに投影されたエクセルのグラフを立体的に眺めてみたりしたのです。

 やってみてまず気づいたことは、赤シアンメガネだから「(ある程度の)フルカラー」を出すことができるとはいえ、純色の赤色や青色や緑色がチャート(グラフ)の色づけに含まれていると両眼視野闘争が生じてしまうので、チャートの色づけも赤シアンメガネ用の配色にしておくべきだということでした。
 だから、いわゆる「スペクトルカラー風の配色」や「青色から赤色に段階的に色が変わる配色」のチャートはアナグリフ立体表示には使えない、と実感させられました。つまり、フルカラーのアナグリフ用の配色にしたチャートにする必要がある、というわけです。

 今回のような試行錯誤を繰り返して行けば、「フルカラー・アナグリフでエクセルのチャート(グラフ)を、自然に立体視させるためのコツ」を会得することができそうです。来年の今頃には、エクセルで立体動画を眺めることができる、ことを「当たり前田のクラッカー(古い)」にしよう、と考えています。

2012-10-05[n年前へ]

「堅苦しいグラフ」も「オモシロ楽しく」変身させてみる!? 

 Mathematicaを使って、真面目なグラフや図を「手書き・落書きマンガ風」にしてしまおう!というAutomating xkcd Diagrams: Transforming Serious to Funny(WOLFRAM BLOG)が面白い。堅苦しいグラフ(や図)で使われている文字を手書き風フォントに変え、線を柔らかく変形させ、その他の図形も全て微妙に変形させることで、ありとあらゆる(もとは)堅苦しい図形を「オモシロ楽しく」変身させています。

 たとえば、サイン関数を書いた無味乾燥なグラフだって(左下)、手書き風のスタイルを適用させるだけで…あらビックリ!の易しく心地良さそうなグラフに大変身するのです(右下)。

 このグラフは下のコードで描かれたもので、普通のやり方で描かれたグラフを(こんな用途のために作った)xkcdConvert関数で手書き風にしたものです。

Plot[Sin[x], {x, -10, 10}, AxesLabel -> {"x", "Sin[x]"}]
// xkcdConvert (* 手書き風の場合 *)

 無味乾燥に見えがちなグラフが読まなければならない時は、それらのグラフに「手書き風」スタイルを適用してみるのも良さそうです。スタイルが変わるだけで、難しい技術書なども人懐っこく・わかりやすく見えてきます。

 どんなページも「手書き風に変えてしまう」というブラウザ用Proxyというものが以前あったような気がします。あるいは、現実世界をマンガ風にしてしまうカメラ(画像処理)ソフトなどもよく見かけます。グラフを手書き風にするだけで「堅苦しさ」がいきなり消え失せたように、少し見方を変えるだけで、「丸っきりの別印象」になったりするかもしれません。

 世界にあるもの・見たものを「もしも○×風だったとしたら?」と想像してみると凄く面白く楽しいんじゃないか、とグラフを見つつ考えます。


参考:他言語での作成・実装例
R での作成例
R での作成ディスカッション
 ただし、これらの例では、字体を変えるだけだったり、データ自体にジッター=揺れを与えていたりするので、もう一ひねり深い実装が欲しいと思ってしまうかもしれないですね。

「堅苦しいグラフ」も「オモシロ楽しく」変身させてみる!?「堅苦しいグラフ」も「オモシロ楽しく」変身させてみる!?「堅苦しいグラフ」も「オモシロ楽しく」変身させてみる!?「堅苦しいグラフ」も「オモシロ楽しく」変身させてみる!?








■Powered by yagm.net