20日目 グラフが書けた。

そうか。この命令文「plt.show()」が足らなかった。

plt.show() を使うとグラフウィンドウが表示された。

しかし、365本のグラフを引くのは今日のところはできない。

いろいろと調整した結果、30本ひくのがやっと。

横長の美しいグラフは引けるのだろうか?

19日目棒グラフを書く

棒グラフを書くことにした。

Metaplotlibを使ってみる

barというメソッドが、棒グラフを書くメソッド。

graphDate と言う配列には、シーケンスを設定した。

sunriseTableには、前日差を格納した。

しかし、何も起きない、ということで、時間切れだ。

18日目 日の出時刻、日の入り時刻の前日差を配列に格納する

日の出時刻、日の入り時刻の前日差を配列に格納しようと考えた。二次元配列になる。

日付、日の出時刻の前日差、日の入り時刻の前日差、という3要素を1年間分格納する。

配列の宣言はやり方はさまざまなのだそうだが、以下のようにするようだ。

以下のような配列ができあがった。2日分だが、これが365日分あるイメージ。

17日目 1年間の日の出、日の入り時間のテーブルを作る

日の出日の入りの1年間分のテーブルを作ってみて、前日差を観察してみた。

ほとんど小学生の自由研究の類いだ。おそらくは昨今の小学生であれば、低学年でもこの程度のPythonはあやつれるのだろう。

大人よりも時間をたっぷりもった小学生がうらやましい。

ちなみに、わたしは文系で高校数学の素養はまったくない。だが、SFが好きで、高校の地学は全校トップ(といっても選択者は10人程度だったはず)だった。

3月の日の出と日の入りの時間

日の出は86秒ずつ早くなる。日の入りは50秒程度で遅くなる

9月の日の出と日の入りの時間。

日の出は45秒程度で遅くなる。日の入りは90秒弱で早くなる。

1. 日の出と日の入りの前日差は、春分が最大86秒だが、秋分では最大89秒で不均等である。

2. 春分では日の出の前日差(86秒)のほうが、日の入りの前日差(51秒)より大きいが、秋分では日の入りの前日差(89秒)のほうが日の出の前日差(46秒)より大きい。

3. (前日差の揺らぎは、秒未満の差違と推察される)

「秋の日はつるべ落とし」といわれるが、「春の日はどんどん早くなる」という類いの慣用句は有名ではなさそうだ。秋の日の入りの時刻は加速度的に早い。だから「秋の日はつるべ落とし」という慣用句が生まれたのだろう。

次の謎の見えるかは、経年で日の出時間は変化するのか、である。

地球の公転がとまらないか、不安で仕方がない。

では。

16日目 1年間の日の出時間テーブルを作る

日の出時間の演算は、(あまりやりたくなかったが)うまくできないので、秒単位の数値型に置き換え、計算することにした。エクセルで計算するならこうするだろうから、Python的な面白味はない。だが、仕方がない。

また、このやり方は、日の出日の入りが夜半を超えるケースがあるとすれば無効となる。白夜など北極圏、南極圏はどうすれば良いのかという課題。

とはいえ、取り掛かろう。

日付時間型を入力に秒に変換する関数はこちら。

で、日の出テーブルを二年間分作ってみる。

テーブルを回す中で、当日と前日の日の出時刻の差分を秒単位で算出する。

以下のようなテーブルができた。右端は、前日と当日の日の出時刻の差分。3月19日は昨日と比べて86秒日の出時刻が早くなっている。

だが、おかしい。半年後の9月は、47秒ほどしか遅くならない。

遅くなっていく時間、最大は60秒ほど。地球の公転軌道は楕円ということと関係しているのだろうか? 太陽の位置が楕円中心より少しずれている、とか。

むしろ11月にピーク。なぜ? さらに、揺らいでいる。Astralの問題?

さしあたり今日はここまで。

15日目 時刻の計算

以下のコードを書いて、t とsの差分である、1分1秒が表示されないか、と想った。

しかしNGだ。

エポック時間に変換して秒単位で計算する、と言うことなんだとおもう。次の課題。

ちなみに、やっていることは本当にプリミティブなことなんだが、エクセルであろうが、なんであろうが起こる問題だ。

時刻の計算は簡単そうでありながら、実は難しいもの、ということがわかっているので、地道にやろうと思う。

14日目 日付から時間だけを抜きだす

日の出時間から時刻情報だけを抜きだそうと思った。

昨日の作戦では、年月日をすべてゼロに置き換えようと考えたが、ゼロにおきかえると西暦0年0月0日と言うことになり、エラー。

なので、(これが正しい方法かはわからないが)、timeクラスを使って、datetimeオブジェクトをtimeオブジェクトに変換する関数を作ってみた。

これがその関数。引数のdtには、datetimeオブジェクトが入る。そこから、時間、分、秒の情報を抜きだして、timeオブジェクトを作るというもの。

これを呼んでみる。

sr に代入されているのはAstralから得られる日の出時間情報。これはdatetimeオブジェクトだ。

1)は、datetimeクラスに備えられた時間情報の取得。取得した情報を文字列変換している。

2)は、取得情報からtimeオブジェクトを生成している。

3)は、関数を使って、取得情報からtimeオブジェクトを生成している。

呼び方はこのように記述。

結果はこちら。

今日の東京の日の出は5時51分27秒。

1)は文字列だが、2)、3)はtimeオブジェクトだ。

今日はここまで。

13日目 年を置き換え

replaceを使うと、日付の一部を置き換えられるようだ。

結果はこちら。

ちなみに、yearに0を代入するとエラー。1はOK。

西暦1年の3月14日になにがあったんだろう?

では。

12日目 git

さしあたり、gitを使うことにする。

Git initと打つと、まずはXcode/iOSライセンスへの同意を求められる。

と言うことで、ライセンスを確認。

改めて実行

だが、ここからつまずく。調べると、まずはgithubでリポジトリを作ってから、と言う手順…。

こだわりにより、まずはローカルだけでgitを使ってみたい、と思うわけだ。

もう少し調査が必要。

頑張ろう。

11日目 時刻情報を取り出す

日の出時刻の情報は、日付と時刻の情報が入ったdatetimeクラスだ。それを時刻情報だけのtimeオブジェクトに変換できないか。

それだけを考えた。

結果は以下のイメージの通り。

sr に格納された情報から時刻情報(時分秒)をゲットするのだが、メソッドで取得できる。

(このあたりが、旧い世代にはない便利さ。素敵だ)

そこで取得した時刻情報(INT)からtimeオブジェクトを生成する。

しかし、もっと洗練されたやり方があるはず、と想像する。

Profile

2025年4月
« 6月    
 123456
78910111213
14151617181920
21222324252627
282930  

カテゴリー