K线图实战
K线图实战
使用pyecharts绘制k线图,优点多多。
一、原始数据
原始数据为csv文件,sh.000001号证券在过去一年内的日k线数据
六列分别为日期、证券编号、开盘价、最高价、最低价、收盘价

二、代码
0、代码实现
直接上代码,之后分段进行分析,部分内容和注释没什么用的,我懒得删了 😆
import pandas as pd
import numpy as np
from datetime import datetime
from pyecharts import options as opts
from pyecharts.charts import Kline
df1 = pd.read_csv('../stock_deal/excel_data/sh.000001_stodatek.csv')
li1 = list(df1)
df2=df1.values
df2 = df2.tolist()
date = []
data1 = []
for i in range(len(df2)):
date.append(df2[i][0])
data1.append([df2[i][2],df2[i][5],df2[i][4],df2[i][3]])
#data1.append(df2[i][2:])
c = (
Kline()
.add_xaxis(date)
.add_yaxis("sh.000001",
data1,
itemstyle_opts=opts.ItemStyleOpts(
color="#ec0000",
color0="#00da3c",
border_color="#8A0000",
border_color0="#008F28",
),
)
.set_global_opts(
xaxis_opts=opts.AxisOpts(is_scale=True),
yaxis_opts=opts.AxisOpts(
is_scale=True,
splitarea_opts=opts.SplitAreaOpts(
is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
),
),
datazoom_opts=[opts.DataZoomOpts(type_="inside")],
title_opts=opts.TitleOpts(title="sh.000001_Kline"),
)
.render("sh.000001_1.html")
)
以下是每个片段含义及其具体功能,可以不看
1、导入库
第2、3行没有用上
import pandas as pd
#import numpy as np
#from datetime import datetime
from pyecharts import options as opts
from pyecharts.charts import Kline
2、数据读取
使用pandas读取数据、读取为DF类型数据
df1 = pd.read_csv('../stock_deal/excel_data/sh.000001_stodatek.csv')
#print(df)
#DataFrame类型数据
3、数据处理
使用list()强制转换只会得到列名列表
df整体数据转列表,应先转为ndarray格式,在转为list格式
转array格式可以用.value,也可以用array()方法.
转list格式用.tolist()
#强制转,只存列名
li1 = list(df1)
#.values方法将dataframe转为numpy.ndarray,也可以用np.array(X)将其转为numpy.ndarray
df2=df1.values
#df2 = np.array(df1)
#将X转为list
df2 = df2.tolist()
print(df2[0])
print(type(df2))
time1 = df2[0][0]
print(time1,type(time1))
4、生成图片
查阅pyecharts绘制k线图所需参数、需求 open, close, lowest, highest、获取的数据为 open,high,low,close,适当调整
注释部分datazoom_opts=[opts.DataZoomOpts(pos_bottom="-2%")],是横坐标缩进条的设计
.add_xaxis、.add_yaxis x、y轴、上升下降颜色表示
生成文件为html文件
date = []
data1 = []
#遍历长度
#获取数据为 open,high,low,close
#pyec需求 open, close, lowest, highest
for i in range(len(df2)):
date.append(df2[i][0])
data1.append([df2[i][2],df2[i][5],df2[i][4],df2[i][3]])
#data1.append(df2[i][2:])
print(date[0])
print(data1[0])
print(type(data1[0]))
'''
c = (
Kline()
.add_xaxis(date)
.add_yaxis("kline", data1)
.set_global_opts(
xaxis_opts=opts.AxisOpts(is_scale=True),
yaxis_opts=opts.AxisOpts(
is_scale=True,
splitarea_opts=opts.SplitAreaOpts(
is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
),
),
datazoom_opts=[opts.DataZoomOpts(pos_bottom="-2%")],
title_opts=opts.TitleOpts(title="Kline-DataZoom-slider-Position"),
)
.render(".html")
)
'''
c = (
Kline()
.add_xaxis(date)
.add_yaxis("sh.000001",
data1,
itemstyle_opts=opts.ItemStyleOpts(
color="#ec0000",
color0="#00da3c",
border_color="#8A0000",
border_color0="#008F28",
),
)
.set_global_opts(
xaxis_opts=opts.AxisOpts(is_scale=True),
yaxis_opts=opts.AxisOpts(
is_scale=True,
splitarea_opts=opts.SplitAreaOpts(
is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
),
),
datazoom_opts=[opts.DataZoomOpts(type_="inside")],
title_opts=opts.TitleOpts(title="sh.000001_Kline"),
)
.render("sh.000001_1.html")
)
三、效果


参考文献
说明文档
基本图表 - pyecharts - A Python Echarts Plotting Library built with love.
总案例
Candlestick - Professional_kline_chart - Document (pyecharts.org)
坐标条案例
[Candlestick - Kline_datazoom_inside - Document (pyecharts.org)](https://gallery.pyecharts.org/#/Candlestick/kline_datazoom_ins

使用pyecharts绘制k线图、读取数据、数据处理、生成图片
浙公网安备 33010602011771号