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

質問編集履歴

7

コードの修正

2021/06/16 09:08

投稿

mmmiii313131
mmmiii313131

スコア3

title CHANGED
File without changes
body CHANGED
@@ -306,4 +306,62 @@
306
306
  ```
307
307
 
308
308
  yahoo_finance_api2のtimestanpって暗号みたいなデータなんですね、、
309
- このままだと使えないですよね
309
+ このままだと使えないですよね
310
+
311
+
312
+ ### (時間は表示できていませんが、)チャートの表示ができました
313
+
314
+ まず、日付の扱いが難しかったので、時間(取得したタイムスタンプ)をインデックスにおき変えて、表示を試みました。
315
+ 前のコードは修正点が多く、どこを修正したかは割愛します。
316
+
317
+
318
+ ```python
319
+ from datetime import datetime
320
+ from kivy_garden.graph import Graph, MeshLinePlot
321
+ from matplotlib.pyplot import cla
322
+ from kivy.app import App
323
+ from datetime import datetime
324
+ import sys
325
+ from yahoo_finance_api2 import share
326
+ from yahoo_finance_api2.exceptions import YahooFinanceError
327
+ from datetime import datetime
328
+
329
+
330
+ class graph_charengeApp(App):
331
+ def build(self):
332
+ #データを読み込んで分割する
333
+
334
+
335
+ my_share = share.Share('MSFT')
336
+ symbol_data = None
337
+
338
+ try:
339
+ symbol_data = my_share.get_historical(share.PERIOD_TYPE_DAY,
340
+ 60,
341
+ share.FREQUENCY_TYPE_MINUTE,
342
+ 5)
343
+ except YahooFinanceError as e:
344
+ print(e.message)
345
+ sys.exit(1)
346
+
347
+ #data = symbol_data['timestamp']
348
+ #new_data = [datetime.utcfromtimestamp(int(data[i]/1000)) for i in range(len(data))]
349
+ price = symbol_data['close']
350
+
351
+ #プロットする
352
+ graph = Graph(xlabel='datetime', ylabel='price', x_ticks_minor=5,
353
+ x_ticks_major=25, y_ticks_major=10,
354
+ y_grid_label=True, x_grid_label=True, padding=5,
355
+ x_grid=True, y_grid=True, xmin=0, xmax= 100, ymin = 255, ymax = 265)
356
+ #x=range(11)
357
+ #if (len(tickers_on_plot)>0):
358
+ #for i in x:
359
+ plot = MeshLinePlot(color=[1, 0, 0, 1])
360
+ plot.points = [(i, price[i]) for i in range(0, 100)]
361
+ graph.add_plot(plot)
362
+
363
+ return graph
364
+
365
+ graph_charengeApp().run()
366
+
367
+ ```

6

気づいた点

2021/06/16 09:08

投稿

mmmiii313131
mmmiii313131

スコア3

title CHANGED
File without changes
body CHANGED
@@ -303,4 +303,7 @@
303
303
 
304
304
  graph_charengeApp().run()
305
305
 
306
- ```
306
+ ```
307
+
308
+ yahoo_finance_api2のtimestanpって暗号みたいなデータなんですね、、
309
+ このままだと使えないですよね

5

コードを修正しました

2021/06/16 07:51

投稿

mmmiii313131
mmmiii313131

スコア3

title CHANGED
File without changes
body CHANGED
@@ -173,4 +173,134 @@
173
173
  ```
174
174
 
175
175
  エラーは出ませんが、表示がされません。
176
- よろしくお願いします。。。
176
+ よろしくお願いします。。。
177
+
178
+
179
+
180
+
181
+ ### 編集しなおしたコード(まだ想定外の表示がされる)
182
+
183
+ ```python
184
+ from kivy.uix.boxlayout import BoxLayout
185
+ import yfinance as yf
186
+ from kivy.app import App
187
+ import mplfinance as mf
188
+ from kivy.app import App
189
+ from kivy.uix.boxlayout import BoxLayout
190
+ from kivy.garden.matplotlib.backend_kivyagg import FigureCanvasKivyAgg
191
+ import matplotlib.pyplot as plt
192
+ import pandas as pd
193
+ import mplfinance as mpf
194
+ import numpy as np
195
+ #data = yf.download(tickers='SPY',period="7d", interval = "1m")
196
+ #print(data)
197
+
198
+
199
+
200
+ class PlotChart(BoxLayout):
201
+ def __init__(self, *args, **kwargs):
202
+ super().__init__(*args, **kwargs)
203
+
204
+ data = yf.download(tickers='SPY',period="7d", interval = "1m")
205
+
206
+
207
+ x = np.linspace(-np.pi, np.pi, 100)
208
+ y = np.sin(x)
209
+ fig, ax = plt.subplots()
210
+ ax.plot(x, y)
211
+
212
+ chart = mf.plot(data, style='yahoo', type='candle', title= 'S&P500 Chart', figratio=(12,4),volume=True)
213
+
214
+ widget = FigureCanvasKivyAgg(chart)
215
+
216
+ self.add_widget(widget.canvas)
217
+
218
+
219
+ class RootWidget(BoxLayout):
220
+ pass
221
+
222
+ class GraphApp(App):
223
+ def __init__(self,*args, **kwargs):
224
+ super().__init__(*args, **kwargs)
225
+ self.title = 'S&P500Chart'
226
+
227
+ def build(self):
228
+ return RootWidget()
229
+
230
+ def main():
231
+ app = GraphApp()
232
+ app.run()
233
+
234
+ if __name__ == '__main__':
235
+ main()
236
+
237
+
238
+
239
+ ```
240
+ ```kivy
241
+ #:kivy 2.0.0
242
+
243
+ <RootWidget>:
244
+ BoxLayout:
245
+ orientation: 'vertical'
246
+
247
+ Label:
248
+ text: 'The following is a graph of Matplotlib'
249
+ size_hint_y: 0.2
250
+ PlotChart:
251
+
252
+ <PlotChart>:
253
+
254
+
255
+ ```
256
+
257
+ FigureCanvasKivyAggはkivyでは使えないとのことで、kivygarden.graphでも自分なりに解釈して書いてみましたが、黒い画面が表示されます。
258
+ ```ここに言語を入力
259
+ from datetime import datetime
260
+ from kivy_garden.graph import Graph, MeshLinePlot
261
+ from matplotlib.pyplot import cla
262
+ from kivy.app import App
263
+ from datetime import datetime
264
+ import sys
265
+ from yahoo_finance_api2 import share
266
+ from yahoo_finance_api2.exceptions import YahooFinanceError
267
+ from datetime import datetime
268
+
269
+
270
+ class graph_charengeApp(App):
271
+ def make_plot(self, plot_dates,tickers_on_plot, plot_colors):
272
+ #データを読み込んで分割する
273
+
274
+
275
+ my_share = share.Share('MSFT')
276
+ symbol_data = None
277
+
278
+ try:
279
+ symbol_data = my_share.get_historical(share.PERIOD_TYPE_DAY,
280
+ 60,
281
+ share.FREQUENCY_TYPE_MINUTE,
282
+ 5)
283
+ except YahooFinanceError as e:
284
+ print(e.message)
285
+ sys.exit(1)
286
+
287
+ date = symbol_data['timestamp']
288
+ price = symbol_data['close']
289
+
290
+ #プロットする
291
+ graph = Graph(xlabel='datetime', ylabel='price', x_ticks_minor=5,
292
+ x_ticks_major=25, y_ticks_major=1,
293
+ y_grid_label=True, x_grid_label=True, padding=5,
294
+ x_grid=True, y_grid=True, xmin=date[10], xmax=date[0], ymin = price[0] - 10, ymax = price[0])
295
+ x=range(11)
296
+ if (len(tickers_on_plot)>0):
297
+ for i in x:
298
+ plot = MeshLinePlot(color=[1, 0, 0, 1])
299
+ plot.points = [(date[i], price[i]) for date[i], price[i] in zip(date, price)]
300
+ graph.add_plot(plot)
301
+
302
+ return graph
303
+
304
+ graph_charengeApp().run()
305
+
306
+ ```

4

コードを修正しました

2021/06/16 07:22

投稿

mmmiii313131
mmmiii313131

スコア3

title CHANGED
@@ -1,1 +1,1 @@
1
- AttributeError: 'Figure' object has no attribute 'fbind'というエラー
1
+ AttributeError: 'Figure' object has no attribute 'fbind'というエラー⇒コード大胆修正ののち、別の問題が発生しました。
body CHANGED
@@ -111,4 +111,66 @@
111
111
 
112
112
  ps:fbbind()関数を使えばよいのではないかと思いましたが、どんな記述にすればよいかわかりません。
113
113
  下記サイトで学習中です。。。
114
- https://qiita.com/gotta_dive_into_python/items/df8325cc1575800d3a99
114
+ https://qiita.com/gotta_dive_into_python/items/df8325cc1575800d3a99
115
+
116
+
117
+
118
+ 解決策が浮かばなかったので書き直しました。
119
+ ```python
120
+ from kivy.uix.boxlayout import BoxLayout
121
+ import yfinance as yf
122
+ from kivy.app import App
123
+ import mplfinance as mf
124
+ from kivy.app import App
125
+ from kivy.uix.boxlayout import BoxLayout
126
+ from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
127
+
128
+ data = yf.download(tickers='SPY',period="7d", interval = "1m")
129
+ print(data)
130
+
131
+
132
+
133
+ class PlotChart(App):
134
+ def __init__(self, *args, **kwargs):
135
+ super().__init__(*args, **kwargs)
136
+
137
+ data = yf.download(tickers='SPY',period="7d", interval = "1m")
138
+ chart = mf.plot(data, style='yahoo', type='candle', title= 'S&P500 Chart', figratio=(12,4),volume=True)
139
+ widget = FigureCanvasTkAgg(chart)
140
+
141
+ self.add_widget(widget)
142
+
143
+
144
+ class RootWidget(BoxLayout):
145
+ pass
146
+
147
+ class GraphApp(App):
148
+ def __init__(self,*args, **kwargs):
149
+ super().__init__(*args, **kwargs)
150
+ self.title = 'S&P500Chart'
151
+
152
+ def build(self):
153
+ return RootWidget()
154
+
155
+
156
+
157
+ ```
158
+
159
+ ```kivy
160
+ #:kivy2.0.0
161
+
162
+ <RootWidget>:
163
+ orientation: 'vertical'
164
+
165
+ Label:
166
+ text: 'The following is a graph of Matplotlib'
167
+ size_hint_y: 0.2
168
+
169
+ PlotChart:
170
+
171
+ <PlotChart>:
172
+
173
+ ```
174
+
175
+ エラーは出ませんが、表示がされません。
176
+ よろしくお願いします。。。

3

タイトルの変更

2021/06/15 12:39

投稿

mmmiii313131
mmmiii313131

スコア3

title CHANGED
@@ -1,1 +1,1 @@
1
- VScode,Anaconda環境で、python,kivy,matplotをつかって、チャートを表示した
1
+ AttributeError: 'Figure' object has no attribute 'fbind'とうエラー
body CHANGED
@@ -1,3 +1,5 @@
1
+ VScode,Anaconda環境で、python,kivy,matplotをつかって、チャートを表示したいです。
2
+
1
3
  出ているエラー
2
4
 
3
5
  AttributeError: 'Figure' object has no attribute 'fbind'

2

㎰)欄をさらに追加しました。

2021/06/15 08:03

投稿

mmmiii313131
mmmiii313131

スコア3

title CHANGED
File without changes
body CHANGED
@@ -102,4 +102,11 @@
102
102
  figはfigureの略だと思いますが、その件とは関係がありますか?よろしくお願いします。
103
103
 
104
104
  ps:参照先のURLを表記すべきですが、いろいろしすぎてどこから引っ張ってきたかわからなくなってしまいました。
105
- 次回から記述いたします。ごめんなさい。
105
+ 次回から記述いたします。ごめんなさい。
106
+
107
+
108
+
109
+
110
+ ps:fbbind()関数を使えばよいのではないかと思いましたが、どんな記述にすればよいかわかりません。
111
+ 下記サイトで学習中です。。。
112
+ https://qiita.com/gotta_dive_into_python/items/df8325cc1575800d3a99

1

参照先のURLについて

2021/06/15 03:32

投稿

mmmiii313131
mmmiii313131

スコア3

title CHANGED
File without changes
body CHANGED
@@ -99,4 +99,7 @@
99
99
 
100
100
  また、昨晩、kivyを使わないコードについて質問しましたが、未解決のままです。
101
101
  fig.show()が機能しないといった内容です。
102
- figはfigureの略だと思いますが、その件とは関係がありますか?よろしくお願いします。
102
+ figはfigureの略だと思いますが、その件とは関係がありますか?よろしくお願いします。
103
+
104
+ ps:参照先のURLを表記すべきですが、いろいろしすぎてどこから引っ張ってきたかわからなくなってしまいました。
105
+ 次回から記述いたします。ごめんなさい。