ダイアグラムをエクセルで描く

先日のサロン会で、「ダイアグラムをエクセル上に表示できる」と口走ってしまった。四半世紀ほど前の話になるが、脱サラした際にパソコンやプリンタは必需品であったが、使用頻度の少ないプロッタを購入するか否かで悩んだ。プロッタとは、座標値を与えて直線や円などの図形を紙の上に作画する機械である。当時、私の書く1本のプログラムの中ではプリンタやプロッタへの出力コマンドが7割程度を占めており、このネックを解消すべく計算処理後の結果のみをエクセルに渡して表示させたり、印刷ツールとしてエクセルを使うようにしていた。この延長戦上で、エクセルのシート上に図形描画機能を使って作画し、印刷できればプロッタを購入する必要もなくなる、と考えたのがキッカケである。

とは言っても、シートの座標系がどうなっているのかがよくわからない。つまり、X=100,Y=100の値を与えても、それがシート上のどこなのかがよくわからないのである。「マクロの記録」機能を使って、適当に直線や円等を描いてその記録から推察するしか術がなく、記録したマクロをそのまま動かせば、その図形は本来重なりマクロが動いたのか動いてないのかわからないような結果になるところ、別の位置に回転して表示されたりするバグで困惑したこともあった。

結論から言うと、ワークシート左上が原点(X=0,Y=0)で、右方向にX、下方向にYの値が大きくなる。図形の方は、直線は2点のXY座標を与えてやればよいが、円やテキストボックスなどは矩形となる範囲で考えて左上の座標と幅、高さを与えることになる。

下図のように幅や高さ、駅名等の文字を設定し、この値を用いてマクロにより直線やテキストボックスを描いた。テキストボックスは文字数によっては入りきらない場合もあるので、仮置きのような状態で後から手で調整した。また、駅の横線の右端の調整や閉塞方式及び制御方式も、直接手で調整あるいは追加した。

上述のとおり多少手を入れる必要があるが、下図が列車のスジを入れる前の原図の状態のシートである。後は、マクロによりこのシートを複写して列車の運転時刻をベースにスジを描いてしていくだけである。

列車の運転時刻は、上下別に下図のように整理した。上下区分は必ずしも列車の上下ではなく、あくまでも設定した駅順のとおりに走る列車を下り列車、その逆を上り列車とし、駅順も上下で逆転させている。1行目は列車ごとの線種(1=細実線、2=太実線、3=細点線、4=太点線)を選択できるようにしている。また下図の赤字のように、他線区から通過で進入してくる列車の場合、通過時刻を発側(当該駅下段)の行に記入するだけではその駅の始発列車と判断されてしまうので、着時刻欄にも通過時刻を入力している。

上図の運転時刻からX座標が、駅の位置からY座標が決まり、マクロにより線を描くだけである。実際には、秒表示のヒゲ(15秒単位のみ)と重ならないように駅の上下6ドット(2分目の幅)は線を引かないようにしている。完成図(一部)は、次のような形となる。

当初はテキストボックスが任意の角度で設定することが不可能だった(現在は可能)ため、列車番号は始発駅付近に表示していたが、ワードアートを利用するようになってからはスジに沿って表示できるようになり、列車番号から判断できることから列車ごとの記号(気動車列車なら矢、回送列車なら□等)は省略している。旧バージョンで書いた宮福鉄道(現在の北近畿タンゴ鉄道、京丹後鉄道)の例を下図に示す。

ダイアグラムをエクセルに表示する長所は、

・紙ベースと異なり、劣化しない。

・0時の縦線と最上段の駅の横線で表示を固定すれば、駅や時刻を確認しやすい。

・日毎の変更等にも対応しやすい。

ぐらいで、現在ではスキャンしたダイアグラムを1枚もののファイルで下図のように保存しておけば自在に拡大して見ることができ、この期に及んで書くことではないが、エクセルにこだわる必要性をあまり感じていない。

現在では2分目の時刻表データを入手することも不可能でダイアグラムを描くこともなく、エクセルの提供してくれるグラフツール以外のグラフや、緯度経度データで白地図程度のものなどを作成するときに、この手法を活用している。

ダイアグラムをエクセルで描く」への4件のフィードバック

  1. 四方誠さま
    先日のサロン会では思わず「エクセルで描画?」と質問してしまいました。四方さまからは以前に土讃線におけるDF50の(最終)イベント列車「秘境号」のダイヤを戴きましたが、余りの出来栄えにすっかり本物の2分目ダイヤだと信じ込んでいたからです。描画もさることながら、時刻を表す「Γ」(通称ヒゲという)に完全に騙されました。通常この15秒目の時刻は一般には入手することが出来ないため、てっきり内部情報(つまり本物)だと信じて疑いませんでした。小生はかねがね「複雑なダイヤは芸術品」だと思っていましたので、こんなに綺麗な手製のダイヤは見たことがなかったからです。とはいえPCオンチの小生には折角のご説明もチンプンカンプンで、殆どイヤ全く理解できませんが、新たな芸術品を拝見できただけでも眼福でした。
    余談ですが小生が撮影用に作成しているダイヤは昔のワープロと作成ソフトのOuDiaを利用したものです。3~4年おきにしか改正されない線区は主に前者を、毎年のように頻繁に改正される線区は後者を利用しています。前者は昔のワープロで縦横それぞれ1㎜を単位として、縦に1㎜=1㎞の換算で駅を、横は2分として作成、プリントアウトしたものに時刻表から時刻を転載して描画します。2分目ダイヤだと奇数分がわからないため、奇数分はヒゲで表示します。運転用ではないので1分単位でわかれば十分です。小生はかくもアナログダイヤを重宝しています。ついでに撮影計画はまずダイヤを描きます。時刻以外は自由に表現できるので、主目的列車線を赤色(最盛期の室蘭線では北斗星=青色、トワイライトEXP=緑、カシオペア=茶色)などに塗分け、どれを優先的に撮るかを検討します。次に国土地理院地図を精査して撮影ポイントを絞ります。更にこれらの情報から列車毎の撮影計画を決めてゆきます。本数の少ないローカル線ではダイヤと首っ引きで、あっちへ行ったりこっちに戻ったりと、最も効率の良いプランを考えます。最近は目的の列車が減って、もうここまでしなくても一日に1本ということも多く、線路傍に陣取ればほぼ終日撮りたい列車が行き来していた頃が懐かしいですね。ダイヤ談議にちょっと悪乗りしました。

    • 1900生様、
      先日のサロン会では、久々にお会いすることでき、嬉しく思いました。変わらぬ柔和なお顔付とお元気そうな姿を拝見し、安堵した次第です。
      民鉄ですと運転時刻も停車時間も列車種別ごとに一律なのでヒゲは主要駅のみのようですが、国鉄の場合は列車の交換、通学生対策、車掌の集札などいろいろな理由で停車時間が異なったりしますので、全駅でヒゲをつけています。このヒゲの高さの分だけ駅間の高さも確保しなければならないので、縦方向が大きくなり、全体を達観しづらいという欠点はあります。最近ではヒゲなしで、旅客列車のみのダイアグラムも書いてみたこともあるのですが、本物からはかけ離れすぎて興味がわかず、活用できていないのが正直なところです。列車の全運行データもいただいたこともあったのですが、その鉄道会社さんに興味がなく、5秒単位のヒゲを用意するのも面倒くさくてそのままになっています。
      次回は、素直にDF50の話でも書いてみようかと思っています。

  2. 四方誠様

    Excelは使いこなせば意外と何でもできる便利ツールで、ダイヤグラム作成もきっとできるのだろうと思っていましたが、下準備がとても大変ですよね。四方さんの多大なご苦労が文章からにじみ出ていていました。

    私は駅名をまとめるのにExcelを使用しています。他にもプロ野球チーム成績を打ち込み、マジックナンバーを算出するのにもExcelを活用しています。

    Excelの活用方法をご教示いただきましてありがとうございました。

  3. 奈良の駅名研究家様、
    コメントありがとうございます。駅名は電略同様、区別さえできればよい、という考え方なので、あまりコメントできず申し訳ないです。
    ご存知かもしれませんが、国土交通省の国土数値情報ダウンロードサイト(https://nlftp.mlit.go.jp/ksj/)に鉄道駅の一覧やGIS、乗降客数データがあります。いっぱいファイルがあるので何が何やら状態になるかもしれませんが、ファイル名の拡張子が”dbf”のファイルはエクセルで直接読み込めますので、機会があれば参考にしてみてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

wp-puzzle.com logo

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください