股票数据读取与K线图绘制

import tushare as ts
import mplfinance as mpf
from pylab import mpl
import pandas as pd

pro = ts.pro_api('')  
#https://tushare.pro/user/token
df = pro.daily(ts_code='600519.SH', start_date='20200101', end_date='20250319')

之后可以输出得到的股票数据

#df.sort_values(by='trade_date',ascending=False)
#取所有行数据,后面取date列,open列等数据
data = df.loc[:, ['trade_date', 'open', 'close', 'high', 'low', 'vol']]
data = data.rename(columns={'trade_date': 'Date', 'open': 'Open', 'close': 'Close', 'high': 'High', 'low': 'Low', 'vol': 'Volume'})  #更换列名,为后面函数变量做准备
#设置date列为索引,覆盖原来索引,这个时候索引还是 object 类型,就是字符串类型。
data.set_index('Date', inplace=True)
#将object类型转化成 DateIndex 类型,pd.DatetimeIndex 是把某一列进行转换,同时把该列的数据设置为索引 index。
data.index = pd.DatetimeIndex(data.index)

#将时间顺序升序,符合时间序列
data = data.sort_index(ascending=True)
# pd.set_option()就是pycharm输出控制显示的设置,下面这几行代码其实没用上,暂时也留在这儿吧
pd.set_option('expand_frame_repr', False)#True就是可以换行显示。设置成False的时候不允许换行
pd.set_option('display.max_columns', None)# 显示所有列
#pd.set_option('display.max_rows', None)# 显示所有行
pd.set_option('colheader_justify', 'centre')# 显示居中
mpl.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
mpl.rcParams["figure.figsize"] = [6.4, 4.8]
mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题

mpf.plot(data, type='candle', mav=(5, 10, 20), volume=True, show_nontrading=False)

得到折线图

绘制股票K线图、均线图、成交量柱状图,以万科为例。

fig, axes = plt.subplots(2, 1, sharex=True, figsize=(15,8))
ax1, ax2 = axes.flatten()

# 绘制第一张子图:K线图和均线图
mpf.candlestick_ochl(ax1, df_arr, width=0.6, colorup = 'r', colordown = 'g', alpha=1.0)

ax1.plot(df_arr[:,0], df['MA5'])  # 绘制5日均线
ax1.plot(df_arr[:,0], df['MA10'])  # 绘制10日均线

ax1.set_title('万科A')  # 设置子图标题
ax1.set_ylabel('价格')  # 设置子图Y轴标签
ax1.grid(True)
ax1.xaxis_date()

# 绘制第二张子图:成交量图
ax2.bar(df_arr[:,0], df_arr[:,5])  # 绘制成交量柱状图
ax2.set_xlabel('日期')  # 设置子图X轴标签
ax2.set_ylabel('成交量')  # 设置子图Y轴标签
ax2.grid(True)
ax2.xaxis_date()

其中第1-2行代码利用2.3.2节绘制多图相关知识点先构造一个画布和两个子图,这里同时设置sharex参数为True,这样两张子图就可以共用一个坐标轴了;第4-13行绘制第一张子图,其中在子图中设置标题或者坐标轴标题得使用set_title()、set_ylabel()、set_xlabel()这样的函数;第15-20行绘制第二张子图:成交量图,其中df_arr[:,0]表示二维数组的第1列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值