mplfinanceのチャートをkivyに組み込みたい
解決したいこと
mplfinanceのチャートをkivyに組み込みたいですが、調べても方法が出てこなくて困っています。
発生している問題・エラー
ImportError: cannot import name '_png' from 'matplotlib'
該当するソースコード
from datetime import datetime
from logging import root
from os import kill
from kivy.core import window
from kivy.uix.widget import Widget
#import matplotlib
from numpy.core.fromnumeric import size
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.layout import Layout
from kivy_garden.graph import Graph, MeshLinePlot
##https://kivy-garden.github.io/graph/flower.html ↑
from kivy.app import App
import sys
from numpy import right_shift, rint
from pandas.core import frame
from pandas.core.indexes.api import get_objs_combined_axis
from yahoo_finance_api2 import share
from yahoo_finance_api2.exceptions import YahooFinanceError
from kivy.uix.scrollview import ScrollView
from kivy.app import runTouchApp
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.core.window import Window
from kivy.base import runTouchApp
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
import sys
from bokeh.plotting import figure, output_notebook, show
from datetime import datetime
from math import pi
import pandas as pd
import mplfinance as mpf
import matplotlib.pyplot as plt
import plotly.graph_objects as go
from kivy.garden.matplotlib.backend_kivyagg import FigureCanvasKivyAgg
#----------------------
class Chart_plot(Screen):
def on_kv_post(self, *args, **kwargs):
'''widgetの初期化が完全に終わった後に行いたい処理を書く所'''
super().on_kv_post(*args, **kwargs)
self.ids.graph_test.add_widget(self.chart())
@classmethod
def chart(cls):
#データを読み込んで分割する
my_share = share.Share('MSFT')
symbol_data = None
try:
symbol_data = my_share.get_historical(share.PERIOD_TYPE_DAY,
21,
share.FREQUENCY_TYPE_MINUTE,
15)
except YahooFinanceError as e:
print(e.message)
sys.exit(1)
data = symbol_data['timestamp']
date = [datetime.utcfromtimestamp(int(data[i]/1000)) for i in range(len(data))]
close = symbol_data['close']
open = symbol_data['open']
high = symbol_data['high']
low = symbol_data['low']
volume = symbol_data['volume']
#----------
df = pd.DataFrame()
df[0] = date
df[1] = open
df[2] = high
df[3] = low
df[4] = close
df[5] = volume
feature = ["date","open","high" ,"low","close", "volume"]
df.columns = feature
df.set_index('date', inplace = True)
df.index.name = 'Date'
df.shape
df.head(3)
df.tail(3)
mpf.plot(df,type='candle')
canvas = FigureCanvasKivyAgg(mpf, master=frame)
cls.add_widget(canvas)
class ChartMainApp(App):
def build(self):
return Chart_plot()
if __name__ == '__main__':
ChartMainApp().run()
このところがわかりません。↓
mpf.plot(df,type='candle')
canvas = FigureCanvasKivyAgg(mpf, master=frame)
cls.add_widget(canvas)
自分で試したこと
上記のわからに所のコードを変えてみたり、matplotlibとpythonのバージョンを下げてみたりしました。(今は最新バージョン)
0 likes