質問するログイン新規登録

Q&A

解決済

1回答

251閲覧

plotly でグラフが表示されない。main 関数の API はそのままにしたい

yosukesan

総合スコア44

Python 3.x

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

Plotly

Plotlyとは、インタラクティブなグラフの作成するためのオープンソースライブラリです。線グラフ・散布図・ヒストグラム・ヒートマップといったグラフだけではなく、3Dグラフやアニメーションの作成も可能です。

0グッド

0クリップ

投稿2025/10/06 16:47

編集2025/10/06 17:41

0

0

実現したいこと

main 関数の API はそのままで、チャートにろうそく足を表示したい。

発生している問題・分からないこと

チャートにろうそく足を表示が表示されない

エラーメッセージ

error

1エラーメッセージは無し

該当のソースコード

python

1import plotly.graph_objects as go 2from plotly.subplots import make_subplots 3 4class Chart: 5 6 def __init__(self): 7 self.__fig = go.Figure() 8 self.candle = self.Candle(self) 9 self.check = 'init' 10 11 def show(self): 12 print(self.check) 13 self.__fig.show() 14 15 def image(self, filename): 16 import plotly.io 17 plotly.io.write_image(self.__fig, filename) 18 19 class Candle: 20 21 def __init__(self, _chart): 22 self._chart = _chart 23 24 def plot(self, price_data): 25 self._chart.__fig = make_subplots(rows=2, cols=1, 26 shared_xaxes=True, 27 vertical_spacing=0.03, 28 subplot_titles=('stock', 'volume'), 29 row_width=[0.2, 0.7]) 30 31 self._chart.__fig.add_trace(go.Candlestick(x=price_data['Open'].index, 32 open=price_data['Open'], 33 high=price_data['High'], 34 low=price_data['Low'], 35 close=price_data['Close'], 36 name='stock'), 37 row=1, col=1 38 ) 39 40 self._chart.__fig.add_trace(go.Bar(x=price_data['Open'].index, 41 y=price_data['Volume'], showlegend=False), 42 row=2, col=1) 43 44 self._chart.check = 'update @ candle' 45 self._chart.__fig.update(layout_xaxis_rangeslider_visible=False) 46 #self._chart.__fig.show() # ここでは正常に表示されている。 47 48if __name__ == "__main__": 49 import pandas 50 import datetime as dt 51 52 stock_data = pandas.DataFrame({'Open': [10, 14, 13], 53 'Close': [9, 12, 11], 54 'High': [16, 18, 17], 55 'Low': [8, 11, 10], 56 'Volume': [100, 132, 120]}, 57 index=[dt.datetime(2025,10,1), dt.datetime(2025,10,2), dt.datetime(2025,10,3)]) 58 59 chart = Chart() 60 chart.candle.plot(stock_data) 61 chart.show()

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

Chart クラスの self.check は関数 plot() で正常に更新され show() で更新後の値が確認できます。同じクラスの self.__fig もplot()で更新されていると理解しているのですが、なぜかデータが表示されません。

21 行目の _chart が cpp で言う参照渡しか、immutable になっているのかなと予想しています。ただ、どうやって修正したらよいのかが分かりません。

補足

特になし

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

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

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

guest

回答1

0

自己解決

class の変数 __fig の変数名を誤ってアクセスしておりました。おさわがせしました。

投稿2025/10/06 18:23

yosukesan

総合スコア44

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.25%

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

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

質問する

関連した質問