Translate

2018/03/29

TRNSYSの計算結果をPlotlyでグラフにしたら見やすかった件

前回Python,Pandasで読み込んだ計算結果をグラフにしてみました。

グラフを描くのに使ったパッケージはPlotly。簡単なコーディングで図のような動くチャートが簡単に描けます。

TRNSYS-Plotly

表示範囲を変えたり、チャートの表示、非表示の切り換えなど、値の描画だけじゃなく動かせるグラフが出来上がります。グラフはブラウザ上に表示されますが、1年分の室温、冷房負荷、暖房負荷のデータを使っているのに驚くほど動作が軽い!

グラフの描画処理

コーディング例は以下の通り。

#utf-8
import pandas as pd
import plotly 

# read the csv file and remove an unnecessary row
csv_filename = 'type25a.txt'
csv = pd.read_csv(csv_filename, delim_whitespace=True)
df = csv.drop(0)        # remove the first row
timestep = 1.0          # timestep
step=str(timestep)+'H'
dt = pd.date_range('1995-01-01 0:00',periods=8761,freq=step) # series for datetime column. 
df['DateTime']=dt

#plotly
# plotly.offline.init_notebook_mode(connected=False)
data = [
    # plotly.graph_objs.Bar(x=raw['TIME'], y=raw['TAIR_first_floor'])
    plotly.graph_objs.Scatter(x=df['DateTime'], y=df['TAIR_first_floor'], name='室温'),
    plotly.graph_objs.Scatter(x=df['DateTime'], y=df['QHEAT_first_floor'], name='暖房負荷', yaxis="y2"),
    plotly.graph_objs.Scatter(x=df['DateTime'], y=df['QCOOL_first_floor'], name='冷房負荷', yaxis="y2")
    
]

layout = plotly.graph_objs.Layout(
    title="年間暖冷房負荷",
    legend={"x":0.9, "y":0.9},
    xaxis={"title":"日付時刻"},
    yaxis={"title":"室温[C]"},
    yaxis2={"title":"暖冷房負荷[kJ/h]", 
        "overlaying":"y", 
        "side":"right",
        "exponentformat":"none",    # prevent 'k' notation
        "separatethousands":True},  # add a comma as a thousand separator
)
fig = plotly.graph_objs.Figure(data=data, layout=layout)
#plotly.offline.iplot(fig)
plotly.offline.plot(fig)

ソースコードの前半は単にCSVの読み込み展開処理です。(前回のソースコードとほぼ同じ)

グラフの描画は後半の15行ほど。これだけで見た目も整った動くグラフが出来上がります。シミュレーションでは何度も何度も解析を繰り返してグラフを描く事があります。これが割と面倒な作業なのですが、ちょっとしたスクリプトで描けるとストレス減りそうです。

動作環境

以下の環境で動作を確認しています。
Windows10 Pro(64bit)
Python:Anaconda 5.1(Python 3.6/64bit)
TRNSYS18.00.0017(64bit)

0 件のコメント:

コメントを投稿