光世紀地図試作版
とりあえずこんなん作ってみました。
地球近傍の恒星の配置を立体的に見ると言う現時点では実用性皆無のプログラムです。
だいたい地球から15光年の恒星が三次元のグラフ上に表示されます。
Jupyter Notebook上で動かすのを想定しています。(Windows10の環境でしか動くのを確かめてません。colabではmatplotlibがinlineだけで、日本語表示が面倒だったので諦めました)
インタラクティブにぐりぐり動かせます。
(ソースを見て何をしたいのかわかる人でないと難しいかもしれませんが、世の中の趣味の多くはそう言うものです。)
%matplotlib notebook #Jupyter Notebook上でグリグリインタラクティブに動かすため>notebook import matplotlib.pyplot as plt from matplotlib.patches import Circle from mpl_toolkits.mplot3d import Axes3D import mpl_toolkits.mplot3d.art3d as art3d import numpy as np import pandas as pd import requests import io # 光世紀地図簡易版 2021年12月26日 # ハードSFに対する石原藤夫先生の功績に対しては、深い敬意を表するものである。 # たなかのりあき氏の「拡張光世紀星表 (仮称)」より「拡張光世紀星表 (最新/未検証版)」 # http://startide.jp/astro/lcc/x/ url = "http://startide.jp/astro/lcc/nightly/lcc2.2.csv" r = requests.get(url).content #CSVファイル読み込み DF1 = pd.read_csv(io.BytesIO(r),header=None,usecols=[2,10,11,12,13,14],names=('Mag','LY','X','Y','Z','Name')) DFx = pd.DataFrame({'Mag':[0],'LY':[0],'X':[0],'Y':[0],'Z':[0],'Name':['Sol']}) #原点に位置するのは我らが太陽! DF1 = DF1.append(DFx) plt.rcParams['font.family'] = 'Meiryo' #地球から15光年以内の恒星を表示 DF1 = DF1.query('LY <= 15') fig = plt.figure(figsize=(16,16)) ax = fig.add_subplot(111,projection='3d') #ax.view_init(azim=-90, elev=90) #↑良い具合に角度調整してくださいな ax.set_title("光世紀地図",size=20) ax.set_xlabel("x(銀河中心方向)", size = 14, color = "r") ax.set_ylabel("y(銀河回転方向)", size = 14, color = "r") ax.set_zlabel("z(銀河北極方向)", size = 14, color = "r") #銀河赤道面に5光年毎の同心円 for l in [5.0,10.0,15.0]: q=Circle((0, 0), l,color='green',fill=False) ax.add_patch(q) art3d.pathpatch_2d_to_3d(q, z=0, zdir="z") #恒星をプロット sc = ax.scatter3D(DF1.X, DF1.Y, DF1.Z,marker="o",linestyle='None') #銀河赤道面への垂線を表示 for rows in DF1.itertuples(): ln01 = art3d.Line3D([rows.X,rows.X,0],[rows.Y,rows.Y,0],[rows.Z,0,0], color='c') ax.add_line(ln01) #恒星名を表示(連星は重なってしまう) for rows in DF1.itertuples(): stext = ax.text(rows.X,rows.Y,rows.Z,rows.Name,color ='r') #以上
だいたい、こんな風な画像が出力されます。
ではでは