質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

3回答

4868閲覧

plotlyのsubplotで複数のローソク足を描画する方法について

NoPython_Nolife

総合スコア49

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2018/09/09 10:58

編集2018/09/18 05:11

plotlyのsubplotを利用して同時に複数のローソク足をレンジスライダーなしで表示したいのです。
ですが、下記コードだと上手くいきません。

for i in range(2): trace= ploty.Candlestick(x=df.index,df.open,df.hi,df.low,df.close) layout = go.Layout(xaxis = dict(rangeslider = dict(visible = False))) data = [trace] fig = tools.make_subplots(rows=2, cols=1) fig = go.Figure(data=data,layout=layout) fig.append_trace(trace,i,1)

解決策ありましたら、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

plotlyでsubplotを利用する場合のlayout設定の方法で行き詰っていたのですね。

それなら、こちらではどうでしょうか?

# coding:utf-8 import numpy as np from plotly import tools import plotly.graph_objs as go import datetime import plotly.offline as offline offline.init_notebook_mode() d1 = datetime.date(2017, 1, 1) d1_list = [] for i in range(0, 100): temp = d1 + datetime.timedelta(i) d1_list.append(temp) X = np.random.randint(0, 50, 100) Y = np.random.randint(0, 100, 100) trace0 = go.Bar(x=d1_list, y=X, name='X') trace1 = go.Bar(x=d1_list, y=Y, name='Y') fig = tools.make_subplots(rows=2, cols=2, subplot_titles=("fig1", "fig2","fig3", "fig4")) fig.append_trace(trace0,1,1) fig.append_trace(trace1,2,1) fig.append_trace(trace1,1,2) fig.append_trace(trace0,2,2) fig['layout'].update(title='test', xaxis1={"rangeslider": {"visible": False}}, xaxis2={"rangeslider": {"visible": True}}, xaxis3={"rangeslider": {"visible": False}}, xaxis4={"rangeslider": {"visible": False}} ) offline.plot(fig, filename="teratail_145689.html")

投稿2018/09/28 10:34

yag1kaz

総合スコア253

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NoPython_Nolife

2018/10/02 13:23

回答ありがとうございます。この場合,tools.make_subplotsでrows=2,cols=2で2×2の計4つのグラフを1-1-1,1-2,2-1,2-2でプロットし、xaxis1,xaxis2,xaxis3,xaxis4でそれぞれにupdate関数で適用させていると理解しています。これはまだ4つならいいのですが、たとえば日数分となる場合、for文を適用させることは出来ますでしょうか? 宜しくお願い致します。
yag1kaz

2018/10/03 03:35

例えばこんな形ではどうでしょう? ``` fig = tools.make_subplots(rows=2, cols=2, subplot_titles=("fig1", "fig2","fig3", "fig4")) k=0 for i in range(0,2): for j in range(0,2): fig.append_trace(trace0,j+1,i+1) k += 1 layout_txt = dict(rangeslider=dict(visible=False)) fig['layout']['xaxis'+str(k)].update(layout_txt) offline.plot(fig, filename="teratail_145689.html") ```
guest

0

ベストアンサー

それでは、例えばこんな形ではどうでしょう?

fig = tools.make_subplots(rows=2, cols=2, subplot_titles=("fig1", "fig2","fig3", "fig4")) k=0 for i in range(0,2): for j in range(0,2): fig.append_trace(trace0,j+1,i+1) k += 1 layout_txt = dict(rangeslider=dict(visible=False)) fig['layout']['xaxis'+str(k)].update(layout_txt) offline.plot(fig, filename="teratail_145689.html")

投稿2018/10/03 03:36

yag1kaz

総合スコア253

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NoPython_Nolife

2018/10/03 19:13

こんなやり方があったんですね!できました!適格かつご丁寧なご案内で大変助かりました!ありがとうございました!
guest

0

エラーメッセージを記載したほうがアドバイスが付きやすいとおもいますよ。

fig.append_trace(trace,i,1)
の部分を
fig.append_trace(trace,i+1,1)
に変更してみてはいかがでしょうか?

offline.plot(fig)
みたいな表示コマンドは指定されていますよね?

toolsのimportエラーはおきていないでしょうか?

なお、現在のPG内容の場合、
fig.append_trace(trace,i,1)
の部分だけがLOOPの中でまわす必要がある部分のようです。

いかに適当なそれっぽいサンプルコードをはっておきます。

# coding:utf-8 import numpy as np from plotly import tools import plotly.graph_objs as go import datetime import plotly.offline as offline d1 = datetime.date(2017, 1, 1) d1_list = [] for i in range(0, 100): temp = d1 + datetime.timedelta(i) d1_list.append(temp) X = np.random.randint(0, 50, 100) Y = np.random.randint(0, 100, 100) layout = go.Layout(xaxis=dict(rangeslider=dict(visible=False))) trace0 = go.Scatter(x=d1_list, y=X, mode='lines', name='X') trace1 = go.Scatter(x=d1_list, y=Y, mode='lines', name='Y') fig = tools.make_subplots(rows=2, cols=1) for i in range(2): if i==0: data = trace0 else: data = trace1 fig.append_trace(data,i+1,1) offline.plot(fig)

投稿2018/09/21 06:54

yag1kaz

総合スコア253

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NoPython_Nolife

2018/09/24 19:26

サンプルコードありがとうございます。append_traceの記述箇所は仰るとおりですね。失礼しました。ただ、layout変数へ入れたgo.Layoutを各trace変数へ反映させるにはどうすればよろしいでしょうか?このままだと、設定が反映されませんでした。よろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問