1. 程式人生 > 實用技巧 >C++ 中using 的使用

C++ 中using 的使用

from pyecharts import options as opts  # 全域性、系列配置
from pyecharts.charts import Bar, Grid, Line  # 柱形圖
from pyecharts.globals import ThemeType  # 主題風格
from pyecharts.charts import Kline, Line, Bar, Gauge, Pie, Scatter, TreeMap  # K線圖、線形圖、柱狀圖、儀表盤、餅圖、散點圖、矩形樹圖
from pyecharts.charts import Grid, Tab  # 組合元件、分頁元件
from pyecharts.components import Table # 表格元件 from pyecharts.options import ComponentTitleOpts from pyecharts.commons.utils import JsCode import time # 時間模組 #import pandas as pd # Pandas模組 ########################################################### Pandas資料讀寫操作 ###########################################################
class Pands_Handler: # 初始化 def __init__(self): self.start = start self.end = end # pandas查詢資料 def data_query(self, table): sql = '''select * from {table}'''.format(table=table) ########################################################### 巨集觀資金流動性 ###########################################################
class DataCollection: # 正回購、逆回購 def get_data_gksccz(self): data = Pands_Handler().data_query('a_china_znhg') data = data.replace({'正回購': -1, '逆回購': 1}) data['amount'] = data['deal_amount'] * data['trading_method'] data = data[['operation_from_date', 'amount']] data.columns = ['日期', '交易金額'] return data # 貨幣供應量 def get_data_hbgyl(self): data = Pands_Handler().data_query('a_china_money_supply') data.columns = ['日期', 'M2', 'M1', 'M0'] return data # 上證、深證、創業板指數 def get_data_index(self): data = Pands_Handler().data_query('a_index_daily') data1 = data[data['scode'] == '000001.SH'] # 上證指數 data2 = data[data['scode'] == '399001.SZ'] # 深證指數 data3 = data[data['scode'] == '399006.SZ'] # 創業板指數 data1 = data1[['date', 'oprice', 'hprice', 'lprice', 'cprice', 'pct_chg', 'amount']] data2 = data2[['date', 'oprice', 'hprice', 'lprice', 'cprice', 'pct_chg', 'amount']] data3 = data3[['date', 'oprice', 'hprice', 'lprice', 'cprice', 'pct_chg', 'amount']] data1.columns = ['日期', '開盤價', '最高價', '最低價', '收盤價', '漲跌幅', '成交額'] data2.columns = ['日期', '開盤價', '最高價', '最低價', '收盤價', '漲跌幅', '成交額'] data3.columns = ['日期', '開盤價', '最高價', '最低價', '收盤價', '漲跌幅', '成交額'] return data1, data2, data3 # 滬深股通資金 def get_data_hsgt(self): data = Pands_Handler().data_query('a_hsgt_moneyflow') data.columns = ['日期', '滬股通', '深股通', '北向資金'] return data # Shibor利率 def get_data_shibor(self): data = Pands_Handler().data_query('a_shibor') data = data[['date', 'pre_night_shibor']] data.columns = ['日期', '隔夜shibor'] return data # 滬深兩市成交額 def get_data_hsls(self): data = Pands_Handler().data_query('a_stock_daily') data = data[['date','amount']] data = data.groupby('date').sum().reset_index() data.columns = ['日期','成交額'] return data # 滬深競價成交額 def get_data_call(self): data = Pands_Handler().data_query('a_stock_call_auction') data = data[['date','amount']] data = data.groupby('date').sum().reset_index() data.columns = ['日期','成交額'] return data # 龍虎榜席位成交 def get_data_lhb_classify(self): data = Pands_Handler().data_query('a_stock_lhb_list') # youziicon:一線遊資(1)、頂級遊資(2)、知名遊資(3)、機構(4)、滬股通(5)、深股通(6)、其他(0) data['amount'] = data['buy'] + data['sell'] data = data[['date', 'direction', 'amount', 'youziicon']] data = pd.pivot_table(data, values='amount', columns='direction', index=['date', 'youziicon'], aggfunc='sum', margins=True) data = data.reset_index() data = data[data['date'] != 'All'] data = data.replace({0: '其他', 1: '一線遊資', 2: '頂級遊資', 3: '知名遊資', 4: '機構', 5: '滬股通', 6: '深股通'}) data.columns = ['日期', '資金型別', '買入額', '賣出額', '淨買入額'] return data # 大資金流向 def get_data_dzjlx(self): data = Pands_Handler().data_query('a_stock_big_money') data['md_net_amount'] = data['bmd_amount'] - data['smd_amount'] data['lg_net_amount'] = data['blg_amount'] - data['slg_amount'] data['elg_net_amount'] = data['belg_amount'] - data['selg_amount'] data = data[['date','bmd_amount','smd_amount','md_net_amount','blg_amount','slg_amount','lg_net_amount','belg_amount','selg_amount','elg_net_amount','net_amount']] data = data.groupby('date').sum().reset_index() data.columns = ['日期','中單買入','中單賣出','中單淨流入','大單買入','大單賣出','大單淨流入','超大單買入','超大單賣出','超大單淨流入','淨流入'] print(data) # 市場情緒 def get_data_scqx(self): data1 = Pands_Handler().data_query('a_market_limit_up_count') data2 = Pands_Handler().data_query('a_stock_scqx_zdtjs') data3 = Pands_Handler().data_query('a_stock_pjgnum') data4 = Pands_Handler().data_query('a_stock_xgdnum') data5 = Pands_Handler().data_query('a_stock_limit_list') class Market: # 特殊柱狀圖 def sbar(self, x_data, y_data, series_names, title, subtitle): c = ( Bar() .add_xaxis(xaxis_data=x_data) .add_yaxis( series_name=series_names, y_axis=y_data, is_large=True, large_threshold=400, label_opts=opts.LabelOpts( is_show=False, ), ) .set_global_opts( title_opts=opts.TitleOpts( title=title, subtitle=subtitle, item_gap=10, title_textstyle_opts=opts.TextStyleOpts( font_family='Microsoft YaHei', font_weight='bolder', font_size=14, color='', ), subtitle_textstyle_opts=opts.TextStyleOpts( font_family=None, font_size=10, color='', ), ), legend_opts=opts.LegendOpts( is_show=True, pos_right=5, orient='vertical', legend_icon='rect', ), tooltip_opts=opts.TooltipOpts( is_show=True, trigger='axis', trigger_on='click', formatter="{a}: {c}", textstyle_opts=opts.TextStyleOpts( font_family='Arial', font_size=14, ) ), visualmap_opts=opts.VisualMapOpts( is_piecewise=True, pieces=[ {"max": 0, "color": 'green'}, {"min": 0, "color": 'red'} ] ) ) .render('shangzheng.html') ) def cbar(self,x_data,series_names,y_data): bar_1 = ( Bar() .add_xaxis(xaxis_data=data["times"]) .add_yaxis( series_name="Volumn", yaxis_data=data["vols"], xaxis_index=1, yaxis_index=1, label_opts=opts.LabelOpts(is_show=False), # 改進後在 grid 中 add_js_funcs 後變成如下 itemstyle_opts=opts.ItemStyleOpts( color=JsCode( """ function(params) { var colorList; if (barData[params.dataIndex][1] > barData[params.dataIndex][0]) { colorList = '#ef232a'; } else { colorList = '#14b143'; } return colorList; } """ ) ), ) .set_global_opts( xaxis_opts=opts.AxisOpts( type_="category", grid_index=1, axislabel_opts=opts.LabelOpts(is_show=False), ), legend_opts=opts.LegendOpts(is_show=False), ) ) # 常規折線圖 def cline(self,x_data): c = ( Line() .add_xaxis(xaxis_data=x_data) .add_yaxis( series_name=series_names, y_axis=y_data, is_smooth=True, linestyle_opts=opts.LineStyleOpts( width=3, opacity=0.5, curve=1, type_='solid', color='' ) ) .set_global_opts(title_opts=opts.TitleOpts(title="Line-smooth")) .render("line_smooth.html") ) def bar1(self): bar = ( Bar() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values(), label_opts=opts.LabelOpts(position="right")) .add_yaxis("商家B", Faker.values(), label_opts=opts.LabelOpts(position="right")) .reversal_axis() .set_global_opts( title_opts=opts.TitleOpts("Timeline-Bar-Reversal (時間: {} 年)".format(i)) ) ) # 特殊折線圖 def kline(self): kline = ( Kline() .add_xaxis(xaxis_data=data["times"]) .add_yaxis( series_name="", y_axis=data["datas"], itemstyle_opts=opts.ItemStyleOpts( color="#ef232a", color0="#14b143", border_color="#ef232a", border_color0="#14b143", ), markpoint_opts=opts.MarkPointOpts( data=[ opts.MarkPointItem(type_="max", name="最大值"), opts.MarkPointItem(type_="min", name="最小值"), ] ), markline_opts=opts.MarkLineOpts( label_opts=opts.LabelOpts( position="middle", color="blue", font_size=15 ), data=split_data_part(), symbol=["circle", "none"], ), ) .set_series_opts( markarea_opts=opts.MarkAreaOpts(is_silent=True, data=split_data_part()) ) .set_global_opts( title_opts=opts.TitleOpts(title="K線週期圖表", pos_left="0"), xaxis_opts=opts.AxisOpts( type_="category", is_scale=True, boundary_gap=False, axisline_opts=opts.AxisLineOpts(is_on_zero=False), splitline_opts=opts.SplitLineOpts(is_show=False), split_number=20, min_="dataMin", max_="dataMax", ), yaxis_opts=opts.AxisOpts( is_scale=True, splitline_opts=opts.SplitLineOpts(is_show=True) ), tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="line"), datazoom_opts=[ opts.DataZoomOpts( is_show=False, type_="inside", xaxis_index=[0, 0], range_end=100 ), opts.DataZoomOpts( is_show=True, xaxis_index=[0, 1], pos_top="97%", range_end=100 ), opts.DataZoomOpts(is_show=False, xaxis_index=[0, 2], range_end=100), ], # 三個圖的 axis 連在一塊 # axispointer_opts=opts.AxisPointerOpts( # is_show=True, # link=[{"xAxisIndex": "all"}], # label=opts.LabelOpts(background_color="#777"), # ), ) ) def timeline(self): attr = Faker.choose() tl = Timeline() for i in range(2015, 2020): pie = ( Pie() .add( "商家A", [list(z) for z in zip(attr, Faker.values())], rosetype="radius", radius=["30%", "55%"], ) .set_global_opts(title_opts=opts.TitleOpts("某商店{}年營業額".format(i))) ) tl.add(pie, "{}年".format(i)) tl.render("timeline_pie.html") def tab(self): tab = Tab() tab.add(bar_datazoom_slider(), "bar-example") tab.add(line_markpoint(), "line-example") tab.add(pie_rosetype(), "pie-example") tab.add(grid_mutil_yaxis(), "grid-example") tab.render("tab_base.html") def if __name__=='__main__': start = '' end = '' #data = pd.DataFrame() x_data = [1,2,3,4] y_data = [-100,200,30,-50] series_names = '' title = '漲跌幅' subtitle='單位' Market().sbar(x_data,y_data,series_names,title,subtitle) Market().cbar( x_data, series_names, y_data)