実現したいこと
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 になっているのかなと予想しています。ただ、どうやって修正したらよいのかが分かりません。
補足
特になし
回答1件
あなたの回答
tips
プレビュー