{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "2942c371", "metadata": {}, "outputs": [ { "data": { "text/html": [ " \n", " " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ " \n", "import pandas as pd\n", "import datetime\n", "import numpy as np\n", "import plotly as pl\n", "import plotly.graph_objs as go\n", "import matplotlib.pyplot as plt\n", "import random\n", "\n", "\n", "import datetime \n", "import matplotlib.dates as mdates\n", "import matplotlib.pyplot as plt\n", "import plotly\n", "import plotly.graph_objs as go\n", "from plotly.offline import init_notebook_mode, iplot\n", "from plotly.subplots import make_subplots\n", "init_notebook_mode()\n", "\n", "#import CoreTraidMath \n", "import plotly.express as px\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "id": "e4bc01b3", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 2, "id": "3f99a168", "metadata": {}, "outputs": [], "source": [ "class agrigateFig():\n", " \n", " def __init__(self,data=[],needDraw=False ,subplot_titles=None):\n", " self.data=data\n", " self.ans=self.getAgrPlt()\n", " if needDraw:\n", " self.subplot_titles=subplot_titles\n", " self.fig=coreDraw(self.ans,True,self.subplot_titles)\n", " \n", " \n", " def getAgrPlt(self):\n", " count=0\n", " ans=[]\n", " for i in self.data:\n", " count=count+1\n", " if type(i)==list:\n", " for g in i:\n", " for j in g.figDict:\n", " ans.append(j)\n", " ans[-1]['row']=count\n", " else:\n", " for j in i.figDict:\n", " ans.append(j)\n", " ans[-1]['row']=count\n", " return ans" ] }, { "cell_type": "code", "execution_count": 3, "id": "7627cfea", "metadata": {}, "outputs": [], "source": [ "class corePlt():\n", " def __init__(self, params={\n", " 'vtype':'',\n", " 'df':pd.DataFrame(),\n", " 'row':1,\n", " 'col':1,\n", " 'name':''\n", " }):\n", " self.vtype=params['vtype']\n", " self.df=params['df']\n", " self.row=params['row']\n", " self.col=params['col']\n", " self.name=params['name']\n", " if 'colorType' in params.keys():\n", " self.colorType=params['colorType']\n", " \n", "\n", "\n", "\n", "\n", "class coreDraw():\n", " def __init__(self, data=[],needShow=False,subplot_titles={}):\n", " self.data=self.getPlts(data)\n", " self.needShow=needShow\n", " self.subplot_titles=subplot_titles\n", " self.ans=self.getAns()\n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " def getBarColorList(self,l,colorType):\n", " if colorType=='diffAbs':\n", " ans=['green']\n", " for i in range(1,len(l)):\n", " if abs(l[i])>abs(l[i-1]):\n", " ans.append('green')\n", " else:\n", " ans.append('red')\n", " elif colorType=='diff':\n", " ans=['green']\n", " for i in range(1,len(l)):\n", " if (l[i])>(l[i-1]):\n", " ans.append('green')\n", " else:\n", " ans.append('red')\n", " elif colorType=='normal':\n", " ans=[]\n", " for i in range(len(l)):\n", " ans.append('gray')\n", " return ans\n", " \n", " def getPlts(self, data):\n", " ans=None\n", " \n", " if type(data)==list:\n", " ans=[]\n", " for i in data:\n", " ans.append(corePlt(i))\n", " else:\n", " ans=[corePlt(data)]\n", " \n", " \n", " \n", " \n", " return ans\n", " \n", " def getAns(self):\n", " '''\n", " data list\n", " vtype\n", " df\n", " row=1\n", " col=1\n", " name\n", " \n", " \n", " \n", " '''\n", " \n", " ans=None\n", " \n", " \n", " \n", " \n", " maxRow=1\n", " maxCol=1\n", " for i in self.data:\n", " if i.row > maxRow:\n", " maxRow =i.row\n", " if i.col > maxCol:\n", " maxCol =i.col\n", " \n", " fig = make_subplots(\n", " rows=maxRow,\n", " cols=maxCol,\n", " shared_xaxes=True,\n", " vertical_spacing=0.1,\n", " shared_yaxes=True,\n", " #horizontal_spacing=0.02,\n", " #column_widths=[]\n", " subplot_titles=self.subplot_titles\n", " )\n", " \n", " \n", " fig.update_layout(xaxis_rangeslider_visible=False)\n", " fig.update_layout(barmode='relative')\n", " \n", " for i in self.data:\n", " if i.vtype=='Scatter':\n", " fig.add_trace(go.Scatter(x=i.df['date'],y=i.df['value'],name=i.name), row=i.row, col=i.col)\n", " elif i.vtype=='OCHL':\n", " fig.add_trace(go.Candlestick(\n", " x=i.df['date'],\n", " open=i.df['open'],\n", " high=i.df['high'],\n", " low=i.df['low'],\n", " close=i.df['close'],\n", " name=i.name),\n", " row=i.row, col=i.col\n", " )\n", " elif i.vtype=='Bars':\n", " for j in i.df.keys():\n", " if j!='date':\n", " try:\n", " colorType=i.colorType\n", " except:\n", " colorType='normal'\n", " colors=self.getBarColorList(i.df[j],colorType)\n", " fig.add_trace(go.Bar(x=i.df['date'], y=i.df[j],name=j,marker_color=colors),row=i.row, col=i.col)\n", " \n", " \n", " \n", " \n", " ans=fig\n", " if self.needShow:\n", " plotly.offline.iplot(fig)\n", " return ans" ] }, { "cell_type": "code", "execution_count": null, "id": "fb284cbe", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.8" } }, "nbformat": 4, "nbformat_minor": 5 }