【qstock量化】动态交互数据可视化

qstock简介

qstock由“Python金融量化”开发,试图打造成个人量化投研分析开源库,目前包括数据获取(data)、可视化(plot)、选股(stock)和量化回测(backtest)四个模块。其中数据模块(data)数据来源于东方财富网、同花顺、新浪财经等网上公开数据,数据爬虫部分参考了现有金融数据包tushare、akshare和efinance。qstock致力于为用户提供更加简洁和规整化的金融市场数据接口。可视化模块基于plotly.express和pyecharts包,为用户提供基于web的交互图形简单操作接口;选股模块提供了同花顺的技术选股和公众号策略选股,包括RPS、MM趋势、财务指标、资金流模型等,回测模块为大家提供向量化(基于pandas)和基于事件驱动的基本框架和模型。


qstock目前在pypi官网上发布,开源版本为1.1.0,意味着读者直接“pip install qstock ”安装即可使用。GitHub地址:

https://github.com/tkfy920/qstock

下面为大家介绍qstock可视化模块plot)的调用方法。以下代码使用jupyter notebook编译,输出图形为基于web的可交互动态图

qstock数据篇专题如下

【qstock开源了】数据篇之行情交易数据

【qstock数据篇】行业概念板块与资金流

【qstock量化】数据篇之股票基本面数据

【qstock量化】数据篇之宏观指标和财经新闻文本

import qstock as qs
from qstock import plot

01 K线图

01

普通K线图

kline(df, mas=5, mal=20, notebook=True,title="股票K线图")

参数说明:

df:数据,包含open,high,low,close,volume列名的dataframe

mas:短期均线,默认5日均线

mal:长期均线,默认20日均线

notebook:True代表在jupyter notebook上显示,False默认输出html,可以保存本地打开。默认为True

title:图形标题

#如果notebook不显示pyecharts的图形,在前面加上以下代码(去掉前面注释)
#from pyecharts.globals import CurrentConfig, NotebookType
#CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_NOTEBOOK
#获取中国平安2022年至今前复权的数据
df=qs.get_data('中国平安',start='2022-06-01',end='2022-10-20')
df.tail()

3b5ff228fe4e3190b4f393f1f18d68f3.jpeg

#使用默认参数
plot.kline(df)

c7c31fe48fd8af0b163219e7dedbd740.jpeg

02

修正K线图

HA_kline(df)

参数df与前面普通k线图线图。

也叫平均K线图(Heikin-Ashi),具体原理可以参考公众号推文《【手把手教你】使用Python对股价的Heikin Ashi蜡烛图进行可视化》。

普通K线图中往往存在很多噪声,这些噪声容易掩盖市场真实趋势的随机波动,包括价格和成交量波动。比如,对市场影响持续性较短的新闻事件,以及对技术指标和市场趋势解读等,都可能造成无意义的短期价格和交易量波动,这样的噪声会对交易者分析市场产生干扰和误导。为了减少普通K线图产生的噪声,HA蜡烛图应运而生,HA中的四个价格中,HA开盘价和HA收盘价都是经过平均计算得来,平均化的处理相当于噪声消除处理,在一定程度上消除了市场的噪声,可以更加明确地反映市场价格的走势。

plot.HA_kline(df)

be103d217a7cb0b92598d66d016d74a4.jpeg

02

树状图

03

矩形树状图

treemap(data, label, weight, value, color=['Green', 'Red', "#8b0000"])

参数说明:

data:dataframe数据格式

label:需要展示的列名或标签名,必须是list,如[px.Constant('股票'), '行业',  '股票名称']
其中,'行业',  '股票名称'必须是data里的存在的列名

weight:data里存在的列,用来显示权重

value:data里存在的列,用来显示数值

color:设置展示的颜色

#获取东方财富行业板块实时涨跌幅数据
data=qs.realtime_data('行业板块')[['名称','涨幅']]
data['权重']=abs(data['涨幅'])
#注意去掉涨幅为0的值,否则会报错
data=data[data['涨幅']!=0]
params={'data':data,'label':['名称'],'weight':'权重','value':'涨幅'}
plot.treemap(**params)

ea3a45a23308a7f863c70c97e090bc24.jpeg

#获取东方财富概念板块实时涨跌幅数据
data=qs.realtime_data('概念')[['名称','涨幅']]
data['权重']=abs(data['涨幅'])
data=data[data['涨幅']!=0]
params={'data':data,'label':['名称'],'weight':'权重','value':'涨幅'}
plot.treemap(**params)

02885558af0dee232fb9b135efbf5430.jpeg

03

ichimoku云图

云图

plot_ichimoku(df, t=9, k=26, l=30, s=52)

参数说明:

df为dataframe数据,包含'open','high','low','close','volume‘列,索引为时间格式;

t:Tenkan-sen:转折线计算周期,默认9个交易日;

k:Kijun-sen:基准线计算周期,默认26;

l:Chikou Span:滞后跨度或延迟线计算周期,默认30天;

s:Senkou Span B:计算前导跨度B或先行上线B,默认52个交易日。

Ichimoku,是一名日本报纸作家提出的,用于衡量动量以及未来价格支撑和阻力区域的技术分析指标,目前被广泛用于判断外汇、期货、股票、黄金等投资品种的趋势和动量。关于ichimoku云图的基本原理详细以参考公众号推文:《【手把手教你】Ichimoku云图指标可视化与交易策略回测》

df=qs.get_data('丰元股份',start='2021-03-01')
plot.plot_ichimoku(df)

d172d060d3dda8ffcfc909cddd6d21d7.jpeg

04

基本图形

05

折线图

line(data=None, x=None, y=None, title=None, color=None, line_group=None, facet_col=None, legend=True)

参数:data为series或dataframe的时候,可以不输入x和y。x为x坐标轴对应数据,y为y轴坐标对应数据。

普通折线图

#获取中国平安前复权价格数据
code='中国平安'
df=qs.get_data(code)
plot.line(df.close,title=code+'价格走势')

0109267bf52377e5cfff82819a7c8326.jpeg

06

股价分位点折线图

stock_line(data=None, x=None, y=None, notebook=True, title=None)

各参数符号与K线相同。

plot.stock_line(df.close)

377ddae1e59260f5dc15e4edb4dd4e9d.jpeg

对比折线图

df['ma20']=df.close.rolling(20).mean()
title='中国平安股价与20日均线'
plot.line(df[['close','ma20']],title=title)

04914ba1eca90e5d1c17c8af07667471.jpeg

#个股资金流
plot.line(qs.stock_money('中国平安'),title='中国平安资金流')

0fe2c08998c8af0b29ec77256fb6f8e3.jpeg

全球指数累计涨幅可视化

#常见的全球指数名称
global_indexs=['sh','cyb','恒生指数','道琼斯','标普500','纳斯达克','英国富时100','法国CAC40','德国DAX30','日经225','韩国KOSPI','澳大利亚标普200','印度孟买SENSEX','台湾加权','俄罗斯RTS','加拿大S&P/TSX','巴西BOVESPA']
index_data=qs.get_price(global_indexs,start='2012-01-01').dropna()
plot.line(index_data/index_data.iloc[0],title='全球指数累计涨幅(2012-2022)')

62fe8702693163a5a563a6d455d84b40.jpeg

07

柱状图

bar(data=None, x=None, y=None, title=None, color=None, legend=False,orientation=None, log_x=False, log_y=False, barmode='group')

参数说明:
'orientation='h'表示横向柱状图,log_x和log_y为True表示使用对数坐标,barmode='group'表示对比条形图,默认。为'relative',
   如qs.bar(dd['总市值'],log_x=True,orientation='h')。

#计算收益率
data=index_data.copy().dropna()
rets=data/data.shift(1)-1
rets=rets.to_period('Y')
rets=(rets.groupby(rets.index).apply(lambda x: ((1+x).cumprod()-1).iloc[-1])*100).round(2)
rets=rets.iloc[-1].sort_values(ascending=False)
title='全球指数2022年涨跌幅'
plot.bar(rets,title=title)

6dfd8f4a6d74ca575bcbbe67dbd31cb9.jpeg

08

基于pyecharts画柱状图

chart_bar(data=None, x=None, y=None, title=None, notebook=True, zoom=False)

x,y均为list,或者x为dataframe

plot.chart_bar(rets,title=title,zoom=True)

ba9a94931b5444137d710a94987c3be8.jpeg

09

纵向柱状图

chart_inv_bar(data=None, x=None, y=None, title=None, notebook=True, zoom=False)

x,y均为list,或者x为dataframe

plot.chart_inv_bar(rets,title=title,zoom=True)

68c11519caba6a945bfee59157d6af94.jpeg

010

散点图

scatter(data=None, x=None, y=None, title=None, color=None, size=None,trend=None, legend=True, marginal_x=None, marginal_y=None)

参数说明:
color根据不同类型显示不同颜色;
size根据值大小显示散点图的大小;
trend='ols'添加回归拟合线;
marginal_x='violin',添加小提琴图;
marginal_y= 'box',添加箱线图。

data=qs.get_data('晓程科技')
plot.scatter(data,x='close',y='volume')

698d09ab4367ddda3a35244cbedf85f9.jpeg

data=qs.get_data('晓程科技')
#计算收益率
data['ret']=data.close/data.close.shift(1)-1
data['weight']=data['ret'].abs()
#对换手率分类
data.loc[data.turnover_rate>20,'rr']='crazy'
data.loc[(10<data.turnover_rate)&(data.turnover_rate<20),'rr']='high'
data.loc[(5<data.turnover_rate)&(data.turnover_rate<10),'rr']='mid'
data.loc[data.turnover_rate<5,'rr']='low'
data.dropna(inplace=True)
plot.scatter(data,x='turnover_rate',y='close',size='weight',trend='ols',marginal_x='histogram',marginal_y='box')

9502434c9799a0aceaee5e2252052f2a.jpeg

011

饼图

pie(data=None, x=None, y=None, color=None, title=None, legend=False, hole=None)

data为dataframe数据,value;
hole数值0-1,显示中间空心;
legend=True显示图例,默认不显示。

实例:个股主营业务占比可视化

code='晓程科技'
df=qs.main_business(code)
c1=df['报告期']=='2022中期'
c2=df['分类方向']=='按产品分'
df=df[c1&c2]
df

49dd02d7ed092b5ddb4e3bf5232e6746.jpeg

plot.pie(df.iloc[:-1],x='分类',y='营业收入(万)',title=code+'主营业务收入')

93af5bde422971017af3b85d40b51b64.jpeg

012

基于pyecharts画饼图

chart_pie(data=None, x=None, y=None, data_pair=None, title=None, notebook=True)

参数与前面相同

plot.chart_pie(data=df.iloc[:-1],x='分类',y='营业收入(万)',title=code+'主营业务收入')

292d11c8ac540ca552bb6e20b8734309.jpeg

05

统计分布图

013

直方图

hist(data=None, x=None, y=None, title=None, color=None, legend=False,orientation=None, log_x=False, log_y=False, barmode='group',histnorm=None)

参数说明:histnorm={1:'percent',2:'probability',3:'density',4:'probability density'},其他参数与前面相同。

#1:'percent',2:'probability',3:'density',4:'probability density'
code='晓程科技'
data=qs.get_data(code,fqt=2)
plot.hist(data,x='close',histnorm=3,title=code+'股价直方图')

e3a00523c4419455056067c13d90b263.jpeg

014

概率密度图

hist_kde(data=None, x=None, y=None, kde=True, stat='count', figsize=(15, 7))

参数说明:直方图默认统计的是观测数,可以进行统计变化,设置stat参数。stat可选参数:count:观测数(默认);frequency:频数;density:密度;probability:概率;kde=True表示添加核密度曲线。其他参数与前面相同。

#stat可选参数:count:观测数(默认);frequency:频数;density:密度;probability:概率
plot.hist_kde(data.close,stat='probability')

4a1ab148e3733f02bb5b44c3ffd2d075.jpeg

015

箱线图

box(data=None, x=None, y=None, title=None, color=None, legend=False,orientation=None, log_x=False, log_y=False, boxmode=None)

参数说明与前面同。

index_list=['上证指数','创业板指','沪深300','道琼斯','标普500','纳斯达克']
data=qs.get_price(index_list)
plot.box(data.dropna())

4b358cb441dab60bf5670c48ec2cb15c.jpeg

#获取面板数据
dd=qs.get_data(index_list)
plot.box(dd,x='name',y='close',color='name')

259a418180862e961eac9a921260a838.jpeg

plot.box(dd,y='name',x='close',color='name',orientation='h')

0c47a445eea5a82554bdf63849fe7497.jpeg

016

小提琴图

violin(data=None, x=None, y=None, title=None, color=None, legend=False,orientation=None, log_x=False, log_y=False, box=False, points=None)

plot.violin(dd,x='name',y='close',color='name',box=True)

2f872904dc40fba978db052c2db73391.png

小提琴是是箱线图和核密度图的集合,通过箱线思维展示数据的各个百分位点。小提琴图上的核密度图展示了数据分布的形状,分布越宽的位置表示数据越集中于该处,反之则说明该处数据分布越少。

plot.violin(dd,y='name',x='close',color='name',box=True,orientation='h')

cf17f69f97506a79657fca00723cc139.png

plot.violin(dd.query('name=="上证指数"'),y='name',x='close',box=True,orientation='h')

962e505cdb41d71fc12aa724b24f2610.jpeg

plot.violin(dd.query('name=="道琼斯"'),y='name',x='close',box=True,orientation='h')

20818215633538f51cbcb74d0fe36a4e.jpeg

06

其他图形

017

热力图

chart_heatmap(x, y, v, title=None, notebook=True)

x,y分别为xy轴对应标签,v是对应数据

sh0=qs.get_data('上证指数').close['2011':'2021']
sh=(sh0/sh0.shift(1)-1).to_period('M')
sh=sh.groupby(sh.index).apply(lambda x: ((((1+x).cumprod()-1).iloc[-1])*100).round(2))
x=[str(i) for i in range(2011,2022)]
y=[str(i)+'月' for i in range(1,13)]
v= [[i,j,sh[str(2011+i)+'-'+str(1+j)]] for i in range(11) for j in range(12)]
plot.chart_heatmap(x,y,v,title='上证指数月度收益率')

756c43cb5f48a1aa78332e8442c366be.jpeg

plot.chart_heatmap_color(x,y,v,title='上证综指月度收益率')

88e7b559a1e8d9b07a465004afcec061.jpeg

018

地图

chart_map(data=None, x=None, y=None, data_pair=None, title=None, notebook=True)

df=qs.realtime_data('地域')
df['名称']=df['名称'].apply(lambda s:s[:-2] if s.endswith('板块') else s)
#df.head()
#地域板块最新价格指数
plot.chart_map(df,x='名称',y='最新')

019

词云图

chart_wordcloud(data, title=None, notebook=True)

txt=qs.news_data('cctv',start='20221020',end='20221021')
#缺失值处理,转为str格式
txt_list=''.join(list(txt.content.apply(lambda s:str(s))))
#使用jieba处理分词并转为词云格式数据
c_data=plot.cloud_data(txt_list)
#画词云图
plot.chart_wordcloud(c_data)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/63125.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新一代开源数据可视化开放平台,是如何做实时大屏/报表的?

先看两张简单配置的习作 datart 实时大屏——决策驾驶舱 datart——生产大屏 上面是在国产开源的数据可视化 datart 上简单配置的两个实时大屏&#xff0c;截图展现不出来交互的效果&#xff0c;下面传一段视频&#xff1a; 生产大屏页面 下面是安利时间 数据可视化 datart&a…

数据可视化:BI热力地图制作

热力图时以特殊高亮的形式显示访客热衷的页面区域和访客所在的地理区域的图示。热力图可以显示不可点击区域发生的事情。 热力图可以直观清楚地看到页面上每一个区域的访客兴趣焦点&#xff0c;无须报告数据分析&#xff0c;图形化展现&#xff0c;无需任何页面分析经验。 上…

海量数据如何在Web端实现动态可视化?看看这家企业是怎么做的

“我们TestLogger公司是一家赛车行业的软件公司&#xff0c;主要是通过分析在赛道上多个传感器收集到的赛车数据&#xff0c;帮助提高赛车性能。TestLogger Analyzer就是其中的一款核心数据分析工具&#xff0c;在我们构建该工具的第一个产品原型时&#xff0c;就发现由于不同类…

动态数据可视化图表制作

动态数据可视化图表制作的5个基本流程&#xff1a;原始数据分析、确定所需图表类型、导入数据&#xff0c;进行初步优化、整体优化和检验成效这五个流程。 1.原始数据分析&#xff1a; 明确动态数据分析并清楚认识到数据的类型、与其他数据之间的关联、需要哪些数据元素、舍弃…

数据动态可视化

数据动态可视化 0 前言1 所需工具2 制作步骤 0 前言 最近做数据分析时&#xff0c;需要绘制一些动态变化图&#xff0c;想到之前见过网上有很多展示世界各国综合实力、GDP这样的视频&#xff0c;便想要找一找有没有相关资源&#xff0c;结果发现教程较少&#xff0c;因此将我的…

数据可视化_EChat

如何获取echart Apache ECharts 实例化1 主要核心文件是这三个 将这三个文件放入webstorm 的 js文件夹中 按照官网文档的实例创建一个html&#xff0c;将body 的内容全部替换 引入js文件 <!DOCTYPE html> <html lang"en"> <head><meta chars…

手把手教你做出数据可视化项目(七)可视化图表数据动态获取及界面跳转

数据可视化前言&#xff1a;https://blog.csdn.net/diviner_s/article/details/115933789 Apache Echarts简介&#xff1a;https://blog.csdn.net/diviner_s/article/details/115934089 项目最终效果图&#xff1a; 此篇博客为自己学习pink老师的课后完成的项目的总结与记录&a…

会展行业年度总结,鲸会务深入探索双线会议领域

2021的日历只剩单薄的几页&#xff0c;又到了盘点与回顾这一年的时间。因为众所周知的原因&#xff0c;整个会议会展行业都在震荡中发展&#xff0c;而防控政策也客观上加速了行业的数字化升级&#xff0c;双线会议会展甚至线上会议会展成为大势所趋。在此过程中&#xff0c;一…

ChatGPT有几个版本,哪个版本最强,如何选择适合自己的?

​ChatGPT就像内容生产界的瑞士军刀。它可以是数学导师、治疗师、职业顾问、编程助手&#xff0c;甚至是旅行指南。只要你知道如何让它做你想做的事&#xff0c;ChatGPT几乎可以提供你要的任何东西。 但重要的是&#xff0c;你知道哪个版本的ChatGPT最能满足你的需求吗&#x…

明朝第一才子杨慎十首诗词

杨慎(1488&#xff5e;1559)&#xff0c;公认为明朝三大才子之首。“相如赋&#xff0c;太白诗&#xff0c;东坡文&#xff0c;升庵科第。”前面的几个大家可能都猜得出来&#xff0c;司马相如的赋&#xff0c;李白的诗&#xff0c;苏东坡的文&#xff0c;而所谓的“升庵科第”…

Python爬虫——爬取古诗词

文章目录 前言一、基本目标二、使用步骤1.进行分析2.整体代码 结果总结 前言 &#x1f338;当你喜欢哪个诗人&#xff0c;想获取他的全部诗词数据的时候&#xff0c;可以通过爬虫来解决这个问题&#xff0c;用爬虫把诗词全部爬下来&#xff0c;然后存到txt文档中&#xff0c;打…

LLM-GPT系列:GPT-1(201806)【1.17亿、5GB】、GPT-2(201902)【15亿、40GB】、GPT-3(202005)【1750亿、45TB】【OpenAI】

GPT1:Imporoving Language Understanding By Generative Pre-training GPT2:Lanuage Models Are Unsupervised Multitask Learners GPT3:Language Models Are Few-shot Learners GitHub:https://github.com/openai/gpt-3 从GPT三个版本的论文名也能看出各版本模型的重点…

汇正财经靠谱吗?沪深创均深V反弹,科创50大涨

盘面回顾&#xff1a; 沪深创午后均多头反击&#xff0c;实现探底回升翻红&#xff0c;截止收盘沪指涨0.09%&#xff0c;深成指涨0.44%&#xff0c;创业板指涨0.67%&#xff0c;科创50大涨1.56%。脑机接口概念股继续大涨&#xff0c;算力、ChatGPT概念股午后再有走强&#xff…

云原生:数字化转型的关键驱动力

作者 | 刘凡 责编 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 随着 Docker、K8s、云原生等技术的演进&#xff0c;为企业数字化转型提供了一种更加现代化的 IT 平台&#xff0c;本文作者是云原生一体化平台 Rainbond 创始人刘凡&#xff0c;他…

几个快速提升工作效率的小工具(Listary等)分享一下(强烈建议收藏)

您好&#xff0c;我是码农飞哥&#xff0c;感谢您阅读本文&#xff01;如果此文对您有所帮助&#xff0c;读者朋友们毫不犹豫的给个一键三连呗 文章目录 给方法名命名的工具搜索工具下载使用 总结结尾彩蛋 给方法名命名的工具 不知道你是否有在给方法或者类起一个合适的方法名…

可以帮助提升程序员高效工作效率的常用小工具推荐

给大家分享一些程序员的实用工具&#xff0c;工具用得好&#xff0c;帮助你快速提升效率。 1、Xmind思维导图 Xmind是一款比较适合记录想法的软件&#xff0c;尤其是在当你负责项目的时候&#xff0c;把项目的各方面想法进行细化和展现出来&#xff0c;不用大量的文字来…

一位老程序员的退休忠告:别想着靠技术生存一辈子!

点击关注公众号&#xff0c;Java干货及时送达&#x1f447; 笔者目前是自己单干&#xff0c;但此前有多年在从事软件开发工作&#xff0c;回头想想自己&#xff0c;特别想对那些初学JAVA/DOT、NET技术的朋友说点心里话&#xff0c;希望我们的体会多少能给你们一些启发。 一、 在…

.NET5发布,这个微软“全家桶”会是.NET的春天吗?

在全面开源的步伐下&#xff0c;微软也逐步跟上了脚步&#xff0c;作为微软最早迈向开源的重要软件之一&#xff0c;.NET 5的发布对微软及其使用者都具有重要意义。 微软未来目标是将所有的 .NET 组件整合到一个产品下&#xff0c;然后用户可以根据需求使用 .NET 的某个部分&a…

让AI为你制作思维导图 —— ChatMind

ChatMind是什么 ChatMind&#xff0c;是一款利用与 AI 的对话中生成和编辑思维导图的工具&#xff0c;支持上下文改写扩充对话&#xff0c;ChatMind AI 可用于多种场景&#xff0c;例如记笔记、日程安排、项目管理、头脑风暴、框架等等。 既能帮助用户快速总结分析&#xff0…

AI写代码靠谱吗?

ChatGPT出来半年多了&#xff0c;用GPT编码的程序员有多少&#xff1f;虽然没有数据支撑&#xff0c;但我感觉用AI编码程序员并不多。我问过几个朋友&#xff0c;他们的回复是&#xff0c;AI没办法完成他想要完成的任务&#xff0c;最终还是得靠自己去写。 GPT真的没办法帮助程…