質問編集履歴

7

コードの修正

2021/06/16 09:08

投稿

mmmiii313131
mmmiii313131

スコア3

test CHANGED
File without changes
test CHANGED
@@ -615,3 +615,119 @@
615
615
  yahoo_finance_api2のtimestanpって暗号みたいなデータなんですね、、
616
616
 
617
617
  このままだと使えないですよね
618
+
619
+
620
+
621
+
622
+
623
+ ### (時間は表示できていませんが、)チャートの表示ができました
624
+
625
+
626
+
627
+ まず、日付の扱いが難しかったので、時間(取得したタイムスタンプ)をインデックスにおき変えて、表示を試みました。
628
+
629
+ 前のコードは修正点が多く、どこを修正したかは割愛します。
630
+
631
+
632
+
633
+
634
+
635
+ ```python
636
+
637
+ from datetime import datetime
638
+
639
+ from kivy_garden.graph import Graph, MeshLinePlot
640
+
641
+ from matplotlib.pyplot import cla
642
+
643
+ from kivy.app import App
644
+
645
+ from datetime import datetime
646
+
647
+ import sys
648
+
649
+ from yahoo_finance_api2 import share
650
+
651
+ from yahoo_finance_api2.exceptions import YahooFinanceError
652
+
653
+ from datetime import datetime
654
+
655
+
656
+
657
+
658
+
659
+ class graph_charengeApp(App):
660
+
661
+ def build(self):
662
+
663
+ #データを読み込んで分割する
664
+
665
+
666
+
667
+
668
+
669
+ my_share = share.Share('MSFT')
670
+
671
+ symbol_data = None
672
+
673
+
674
+
675
+ try:
676
+
677
+ symbol_data = my_share.get_historical(share.PERIOD_TYPE_DAY,
678
+
679
+ 60,
680
+
681
+ share.FREQUENCY_TYPE_MINUTE,
682
+
683
+ 5)
684
+
685
+ except YahooFinanceError as e:
686
+
687
+ print(e.message)
688
+
689
+ sys.exit(1)
690
+
691
+
692
+
693
+ #data = symbol_data['timestamp']
694
+
695
+ #new_data = [datetime.utcfromtimestamp(int(data[i]/1000)) for i in range(len(data))]
696
+
697
+ price = symbol_data['close']
698
+
699
+
700
+
701
+ #プロットする
702
+
703
+ graph = Graph(xlabel='datetime', ylabel='price', x_ticks_minor=5,
704
+
705
+ x_ticks_major=25, y_ticks_major=10,
706
+
707
+ y_grid_label=True, x_grid_label=True, padding=5,
708
+
709
+ x_grid=True, y_grid=True, xmin=0, xmax= 100, ymin = 255, ymax = 265)
710
+
711
+ #x=range(11)
712
+
713
+ #if (len(tickers_on_plot)>0):
714
+
715
+ #for i in x:
716
+
717
+ plot = MeshLinePlot(color=[1, 0, 0, 1])
718
+
719
+ plot.points = [(i, price[i]) for i in range(0, 100)]
720
+
721
+ graph.add_plot(plot)
722
+
723
+
724
+
725
+ return graph
726
+
727
+
728
+
729
+ graph_charengeApp().run()
730
+
731
+
732
+
733
+ ```

6

気づいた点

2021/06/16 09:08

投稿

mmmiii313131
mmmiii313131

スコア3

test CHANGED
File without changes
test CHANGED
@@ -609,3 +609,9 @@
609
609
 
610
610
 
611
611
  ```
612
+
613
+
614
+
615
+ yahoo_finance_api2のtimestanpって暗号みたいなデータなんですね、、
616
+
617
+ このままだと使えないですよね

5

コードを修正しました

2021/06/16 07:51

投稿

mmmiii313131
mmmiii313131

スコア3

test CHANGED
File without changes
test CHANGED
@@ -349,3 +349,263 @@
349
349
  エラーは出ませんが、表示がされません。
350
350
 
351
351
  よろしくお願いします。。。
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+
361
+ ### 編集しなおしたコード(まだ想定外の表示がされる)
362
+
363
+
364
+
365
+ ```python
366
+
367
+ from kivy.uix.boxlayout import BoxLayout
368
+
369
+ import yfinance as yf
370
+
371
+ from kivy.app import App
372
+
373
+ import mplfinance as mf
374
+
375
+ from kivy.app import App
376
+
377
+ from kivy.uix.boxlayout import BoxLayout
378
+
379
+ from kivy.garden.matplotlib.backend_kivyagg import FigureCanvasKivyAgg
380
+
381
+ import matplotlib.pyplot as plt
382
+
383
+ import pandas as pd
384
+
385
+ import mplfinance as mpf
386
+
387
+ import numpy as np
388
+
389
+ #data = yf.download(tickers='SPY',period="7d", interval = "1m")
390
+
391
+ #print(data)
392
+
393
+
394
+
395
+
396
+
397
+
398
+
399
+ class PlotChart(BoxLayout):
400
+
401
+ def __init__(self, *args, **kwargs):
402
+
403
+ super().__init__(*args, **kwargs)
404
+
405
+
406
+
407
+ data = yf.download(tickers='SPY',period="7d", interval = "1m")
408
+
409
+
410
+
411
+
412
+
413
+ x = np.linspace(-np.pi, np.pi, 100)
414
+
415
+ y = np.sin(x)
416
+
417
+ fig, ax = plt.subplots()
418
+
419
+ ax.plot(x, y)
420
+
421
+
422
+
423
+ chart = mf.plot(data, style='yahoo', type='candle', title= 'S&P500 Chart', figratio=(12,4),volume=True)
424
+
425
+
426
+
427
+ widget = FigureCanvasKivyAgg(chart)
428
+
429
+
430
+
431
+ self.add_widget(widget.canvas)
432
+
433
+
434
+
435
+
436
+
437
+ class RootWidget(BoxLayout):
438
+
439
+ pass
440
+
441
+
442
+
443
+ class GraphApp(App):
444
+
445
+ def __init__(self,*args, **kwargs):
446
+
447
+ super().__init__(*args, **kwargs)
448
+
449
+ self.title = 'S&P500Chart'
450
+
451
+
452
+
453
+ def build(self):
454
+
455
+ return RootWidget()
456
+
457
+
458
+
459
+ def main():
460
+
461
+ app = GraphApp()
462
+
463
+ app.run()
464
+
465
+
466
+
467
+ if __name__ == '__main__':
468
+
469
+ main()
470
+
471
+
472
+
473
+
474
+
475
+
476
+
477
+ ```
478
+
479
+ ```kivy
480
+
481
+ #:kivy 2.0.0
482
+
483
+
484
+
485
+ <RootWidget>:
486
+
487
+ BoxLayout:
488
+
489
+ orientation: 'vertical'
490
+
491
+
492
+
493
+ Label:
494
+
495
+ text: 'The following is a graph of Matplotlib'
496
+
497
+ size_hint_y: 0.2
498
+
499
+ PlotChart:
500
+
501
+
502
+
503
+ <PlotChart>:
504
+
505
+
506
+
507
+
508
+
509
+ ```
510
+
511
+
512
+
513
+ FigureCanvasKivyAggはkivyでは使えないとのことで、kivygarden.graphでも自分なりに解釈して書いてみましたが、黒い画面が表示されます。
514
+
515
+ ```ここに言語を入力
516
+
517
+ from datetime import datetime
518
+
519
+ from kivy_garden.graph import Graph, MeshLinePlot
520
+
521
+ from matplotlib.pyplot import cla
522
+
523
+ from kivy.app import App
524
+
525
+ from datetime import datetime
526
+
527
+ import sys
528
+
529
+ from yahoo_finance_api2 import share
530
+
531
+ from yahoo_finance_api2.exceptions import YahooFinanceError
532
+
533
+ from datetime import datetime
534
+
535
+
536
+
537
+
538
+
539
+ class graph_charengeApp(App):
540
+
541
+ def make_plot(self, plot_dates,tickers_on_plot, plot_colors):
542
+
543
+ #データを読み込んで分割する
544
+
545
+
546
+
547
+
548
+
549
+ my_share = share.Share('MSFT')
550
+
551
+ symbol_data = None
552
+
553
+
554
+
555
+ try:
556
+
557
+ symbol_data = my_share.get_historical(share.PERIOD_TYPE_DAY,
558
+
559
+ 60,
560
+
561
+ share.FREQUENCY_TYPE_MINUTE,
562
+
563
+ 5)
564
+
565
+ except YahooFinanceError as e:
566
+
567
+ print(e.message)
568
+
569
+ sys.exit(1)
570
+
571
+
572
+
573
+ date = symbol_data['timestamp']
574
+
575
+ price = symbol_data['close']
576
+
577
+
578
+
579
+ #プロットする
580
+
581
+ graph = Graph(xlabel='datetime', ylabel='price', x_ticks_minor=5,
582
+
583
+ x_ticks_major=25, y_ticks_major=1,
584
+
585
+ y_grid_label=True, x_grid_label=True, padding=5,
586
+
587
+ x_grid=True, y_grid=True, xmin=date[10], xmax=date[0], ymin = price[0] - 10, ymax = price[0])
588
+
589
+ x=range(11)
590
+
591
+ if (len(tickers_on_plot)>0):
592
+
593
+ for i in x:
594
+
595
+ plot = MeshLinePlot(color=[1, 0, 0, 1])
596
+
597
+ plot.points = [(date[i], price[i]) for date[i], price[i] in zip(date, price)]
598
+
599
+ graph.add_plot(plot)
600
+
601
+
602
+
603
+ return graph
604
+
605
+
606
+
607
+ graph_charengeApp().run()
608
+
609
+
610
+
611
+ ```

4

コードを修正しました

2021/06/16 07:22

投稿

mmmiii313131
mmmiii313131

スコア3

test CHANGED
@@ -1 +1 @@
1
- AttributeError: 'Figure' object has no attribute 'fbind'というエラー
1
+ AttributeError: 'Figure' object has no attribute 'fbind'というエラー⇒コード大胆修正ののち、別の問題が発生しました。
test CHANGED
@@ -225,3 +225,127 @@
225
225
  下記サイトで学習中です。。。
226
226
 
227
227
  https://qiita.com/gotta_dive_into_python/items/df8325cc1575800d3a99
228
+
229
+
230
+
231
+
232
+
233
+
234
+
235
+ 解決策が浮かばなかったので書き直しました。
236
+
237
+ ```python
238
+
239
+ from kivy.uix.boxlayout import BoxLayout
240
+
241
+ import yfinance as yf
242
+
243
+ from kivy.app import App
244
+
245
+ import mplfinance as mf
246
+
247
+ from kivy.app import App
248
+
249
+ from kivy.uix.boxlayout import BoxLayout
250
+
251
+ from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
252
+
253
+
254
+
255
+ data = yf.download(tickers='SPY',period="7d", interval = "1m")
256
+
257
+ print(data)
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+ class PlotChart(App):
266
+
267
+ def __init__(self, *args, **kwargs):
268
+
269
+ super().__init__(*args, **kwargs)
270
+
271
+
272
+
273
+ data = yf.download(tickers='SPY',period="7d", interval = "1m")
274
+
275
+ chart = mf.plot(data, style='yahoo', type='candle', title= 'S&P500 Chart', figratio=(12,4),volume=True)
276
+
277
+ widget = FigureCanvasTkAgg(chart)
278
+
279
+
280
+
281
+ self.add_widget(widget)
282
+
283
+
284
+
285
+
286
+
287
+ class RootWidget(BoxLayout):
288
+
289
+ pass
290
+
291
+
292
+
293
+ class GraphApp(App):
294
+
295
+ def __init__(self,*args, **kwargs):
296
+
297
+ super().__init__(*args, **kwargs)
298
+
299
+ self.title = 'S&P500Chart'
300
+
301
+
302
+
303
+ def build(self):
304
+
305
+ return RootWidget()
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+ ```
314
+
315
+
316
+
317
+ ```kivy
318
+
319
+ #:kivy2.0.0
320
+
321
+
322
+
323
+ <RootWidget>:
324
+
325
+ orientation: 'vertical'
326
+
327
+
328
+
329
+ Label:
330
+
331
+ text: 'The following is a graph of Matplotlib'
332
+
333
+ size_hint_y: 0.2
334
+
335
+
336
+
337
+ PlotChart:
338
+
339
+
340
+
341
+ <PlotChart>:
342
+
343
+
344
+
345
+ ```
346
+
347
+
348
+
349
+ エラーは出ませんが、表示がされません。
350
+
351
+ よろしくお願いします。。。

3

タイトルの変更

2021/06/15 12:39

投稿

mmmiii313131
mmmiii313131

スコア3

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

2

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

2021/06/15 08:03

投稿

mmmiii313131
mmmiii313131

スコア3

test CHANGED
File without changes
test CHANGED
@@ -207,3 +207,17 @@
207
207
  ps:参照先のURLを表記すべきですが、いろいろしすぎてどこから引っ張ってきたかわからなくなってしまいました。
208
208
 
209
209
  次回から記述いたします。ごめんなさい。
210
+
211
+
212
+
213
+
214
+
215
+
216
+
217
+
218
+
219
+ ps:fbbind()関数を使えばよいのではないかと思いましたが、どんな記述にすればよいかわかりません。
220
+
221
+ 下記サイトで学習中です。。。
222
+
223
+ https://qiita.com/gotta_dive_into_python/items/df8325cc1575800d3a99

1

参照先のURLについて

2021/06/15 03:32

投稿

mmmiii313131
mmmiii313131

スコア3

test CHANGED
File without changes
test CHANGED
@@ -201,3 +201,9 @@
201
201
  fig.show()が機能しないといった内容です。
202
202
 
203
203
  figはfigureの略だと思いますが、その件とは関係がありますか?よろしくお願いします。
204
+
205
+
206
+
207
+ ps:参照先のURLを表記すべきですが、いろいろしすぎてどこから引っ張ってきたかわからなくなってしまいました。
208
+
209
+ 次回から記述いたします。ごめんなさい。