据提交人称:
通过plt的表现,我们可以知道plt可以实现很多东西,比如数据可视化,比如解释重点,比如显示区间,比如写直方图,可以让我们更形象、具体、准确的找到数据信息,表达意思。
事实上,我们必须知道一些关于plt库或其他库的事情:
通读或操作一遍或几遍,掌握专有名词和记录笔记,剩下的交给百度。其实不难。难的是如何布局,通过合理的布局和标记,让自己的意思表达清楚。从这个角度来说,我们从自己实际简单的业务中去培养,或者借鉴别人的案例,调整自己的思路,都是有好处的。
读书只是帮助我们进行更专业、更系统的搜索,也为我们在需要建立新业务时提供了一种思维方式,通过基础来启发我们的思维。不要害怕错误或困难。毕竟百度上能遇到的问题基本都有。
勇于开拓思维,举一反三。
是给文的。
系列文章:
Python股票量化交易入门实战01
Python股票量化交易到入门级实战02
import pandas as PD import numpy as NP import time import matplotlib . py plot as pltplt . rcparams[' font . sans-serif ']=[' sim hei ']#用于正常显示中文标签plt。RC params[' axes . unicode _ MINUS ']=false #用于正常显示负号FIG=PLT。图(FIG size=(12,8))AX=FIG Add _ Subplot(111)AX。HIST (NP。随机的。Normal ( Scale=1,size=1000),bins=50,density=false,color=' r') #这里需要注意的是,ax.hist只接受一条数据,不能接受多条数据。Ax.set_xlabel('样本值',fontsize=15)ax.set_ylabel('频率',fontsize=15)ax.set_title('正态分布直方图',font size=25)PLT . show()010-699。
5.2.7K线图的绘制:
在上面的两个案例中,我们现在可以建立成交量的展会和涨跌幅.的展会,我们将通过candlestics2_ochl()函数绘制k线。
import pandas as PD import numpy as NP import time import matplotlib . py plot as plt PLT . rcparams[' font . sans-serif ']=[' sim hei ']#用于正常显示中文标签PLT。RC params[' axes . unicode _ MINUS ']=false #用于正常显示负号FIG=PLT。图(FIG size=(8,6))AX=FIG Add _ Subplot(111)#导入数据,数据预处理DF=PD。阅读_ CSV
df['date'])df=df.sort_values(by='date')#截取数据,数据太长无法显示df=df[-20:]df=df.reset_index(drop=True)#引入新函数import mpl_finance as mpf#书本用的list格式,笔者尝试用了一下series,这样子可以减少格式的转换。mpf.candlestick2_ohlc(ax,df['open'],df['high'],df['low'],df['close'],width=0.5, colorup='r',colordown='g')#推导式,格式化时间data_index=[p.strftime("%Y-%m-%d ") for p in df['date']]#长度ax.set_xlim(0,10)#间隔ax.set_xticks(np.arange(0,10))#接收list格式,一个参数。ax.set_xticklabels(data_index,rotation=45)ax.set_xlabel('日期',fontsize=5)ax.set_ylabel('价格',fontsize=15)ax.set_title('日k线图',fontsize=15)plt.show()略
5.4多子图对象的创建和布局:
这里我们来将个股的数据进行可视化,任务为展示浦发银行的K线图走势,均线走势以及成交量。
import matplotlib.pyplot as pltimport pandas as pdimport numpy as npimport mplfinance as mpfplt.rcParams['font.family'] = 'sans-serif'plt.rcParams['font.sans-serif'] = 'SimHei'#导入数据df=pd.read_csv('sh600000.csv')df['date']=pd.to_datetime(df['date'],format='%Y-%m-%d')df=df.sort_values(by='date')# df.index=df.pop('date')df=df.set_index('date')df=df['2017':'2019']#设计成这个样子,就可以进行封装,调参,测试了。df=df[[ 'open', 'high', 'low', 'close','volume']]#因为,mpf会自动识别这五个参数,所以为了防止报错,就取这几个数,防止报错。#设置参数my_color = mpf.make_marketcolors(up='red',#上涨时为红色 down='green',#下跌时为绿色 edge='i',#隐藏k线边缘 volume='in',#成交量用同样的颜色 inherit=True)#设置网格my_style = mpf.make_mpf_style(gridaxis='both',#设置网格 gridstyle='-.', y_on_right=True, marketcolors=my_color)#生成3条均线df["sma5"] = df["close"].rolling(5).mean()df["sma10"] = df["close"].rolling(10).mean()df["sma30"] = df["close"].rolling(30).mean()#精确小数点,提高计算精度df=df.round(2)#初始化信号df['sign']=0#生成信号for i in range(1,len(df)): if df.sma5.iloc[i]>df.sma10.iloc[i] and df.sma5.iloc[i-1]<df.sma10.iloc[i-1]: df.sign.iloc[i]=1 if df.sma5.iloc[i]<df.sma10.iloc[i] and df.sma5.iloc[i - 1]>df.sma10.iloc[i - 1]: df.sign.iloc[i] =-1#生成买点位置df['buysign']=df[df['sign']>0]['sign']#生成卖点位置df['sellsign']=df[df['sign']<0]['sign']#将均线,买点,卖点信号设置好,然后准备传参add_plot=[mpf.make_addplot(df[['sma5','sma10']]), mpf.make_addplot(df['buysign'],scatter=True,markersize=80,marker='^',color='r'), mpf.make_addplot(df['sellsign'],scatter=True,markersize=80,marker='v',color='g')]#接受设置好的参数mpf.plot(df,type='candle', addplot=add_plot, style=my_style, volume=True,#展示成交量副图 figratio=(2,1),#设置图片大小 figscale=5)
效果图:
感悟: