2012年10月27日土曜日

EXCELでタイムライン表示

計算結果のうち、複数のイベントが何秒に発生し、それらの関係をまとめるためによくタイムラインを作ります。それ用の表示プログラムもこれまで何種類も作ってきたんですが、OSが変わったり、windows manager、あるいはミドルウェアが変わったりで同じような機能のものを何回もつくってきた気がします。
ふと思いついたのが、最近のEXCELって機能が増えてきたから、グラフのうちの散布図を使えばできるんでないか?横軸を時間、縦軸はイベントの種類を適当につけてラベルを散布図のマークのところにつけれれば・・・ と思ってぐぐってみたら、結構みんなおんなじこと考えるんですね。いくつもヒットしましたが、microsoftの公式見解では「不可能」とのこと。Σ(゜д゜lll) ええ~~、そんなにはっきりいわれちゃうと、と思ったんですが他にヒットしてみたのを見ると、なんか頑張れば似たようなものができるというのがありました。いくつか調べてみて、何とか思い描くものができました。結構、手順は複雑ですが、一度作れれば後は各イベントの時間をペーストしてやれば、いろんな計算結果をきれいにレポートにまとめれます。
ちょっと長いですが、手順をまとめます。

①まずデータを用意します。下図に示したように、第1列にイベント名称(これをラベルとして散布図に表示したい)、第2列にそのイベントの発生時間、第3列が今回の肝として散布図を描くために各イベントの種類(シーケンスと定義しましたが特にイベントの順番というわけではありません)を定義します。散布図として描くのは図中で選択してあるセルです。


②これで選択してあるエリアで、散布図を描きます。
こんな感じになり、横軸が時間なのはいいですが、肝心のグラフ中のイベントのマークのところにラベルがつきません。ここに手作業で一つずつラベルを定義してやります。

③散布図中のイベントマークのところをマウスで左クリックしてやると、すべてのマークが選択され、各マーク(イベント)のところにシーケンスの値がラベルとして右側(デフォルト位置)に表示されます。
なんとなくイメージに近くなりました。ここで細工を加えます。

④ここでさらに右クリックする等して「データラベルの書式設定」を表示させます。デフォルトでは「ラベルの内容」はY値になっていますが、これを「系列名」にしてやります。


⑤やりたいことは、このラベルのところを第1列で定義した各イベントの名前にしたいのです。ここで一つのマークだけを選択するために、最初のマークをShiftキーを押しながら右クリックしてやります。すると一つだけ選択状態になります。
表示されている各マーク(イベント)の表示がシーケンスという表示に手順④でなっていますが、そのうちの一つだけが選択された状態になりました。

⑥さてここが重要です。この状態で、「=」キーを押してやります。表示上は何も変わりませんが、そこで当該マークのラベルにしたい名前が定義してあるセルを選択します。(下図の例では、「ABC」を選択した結果です)
みごと望みの表示になりました。これを各マークで繰り返し、グラフに表示したいイベント名のセルを定義していきます。ラベルの表示位置はここではデフォルトの「右側」のままですが、手順④のところの「データラベルの書式設定」で上にも下にもできます。

またここが重要なのですが、こういうタイムチャートを描いていると計算結果によってとなりあうイベントの時間が近くてラベルが重なりあって見難くなります。そういう時は各イベントで定義してある「シーケンス」の値を適当に調整して表示位置を上下に変えます。

これで一度できてしまえば、時間の列のところに任意の計算結果をペーストしてやればきれいなタイムチャートの完成です。この様なことをやってくれるadd-inを作ったよというHPもありましたが、ちょっと怖かったので今回は手作業で行いました。

0 件のコメント:

コメントを投稿