啾言啾语
今年的中秋节又要到啦,小啾在次祝大家 中秋快乐,阖家团圆,生活幸福美满,未来一片坦途! 月饼,作为中秋节的灵魂元素之我们多数人都是从消费者的视角尽享其美味。本期Blog中,小啾将围绕中秋主题,使用python的pyecharts,从月饼生产者的视角,为大家呈现出月饼龙头企业——广州酒家近一个月的股票走势。
获取数据
做可视化,第一步要解决的就是数据问题。这里使用tushare接口获取广东酒家的股价数据。并保存为csv数据文件。广州酒家的股票代码为’60304SH’。代码如下:
import pandas as pd
import tushare as ts
from pyecharts import options as opts
from pyecharts.charts import Page
from pyecharts.charts import Line
from pyecharts.charts import Kline
# 输入您的turshare接口
token = "Your token"
pro = ts.pro_api(token)
# 定义获取数据函数
def get_data(tscode):
df = pro.daily(ts_code=tscode)
df = df.loc[:, ["trade_date", "open", "high", "low", "close", "vol"]]
df.rename(columns={
"trade_date": "Date",
"open": "Open",
"high": "High",
"low": "Low",
"close": "Close",
"vol": "Volume"
},
inplace=True)
df["Date"] = pd.to_datetime(df["Date"])
df.set_index(["Date"], inplace=True)
df = df.sort_index()
return df
get_data("603043.SH").to_csv("广州酒家日线数据.csv")
保存的数据如下所示:
绘制线
拿到数据后,就可以进行绘了。因为小啾最近事情比较多,特别的繁忙,所以这里就只绘制折线和蜡烛啦。但是效果依然是杠杠的。
# 读取数据
df = pd.read_csv("广州酒家日线数据.csv")
# 设置索引,将字符串格式的日期转化为时间序列的形式,这样可以很大程度上方便我们索引
df.index = pd.to_datetime(df.Date)
# 提取收盘价
Close = df.Close
# 求取5日简单移动平均数
Sma5 = pd.Series(0.0, index=Close.index)
for i in range(4, len(Close)):
Sma5[i] = round(sum(Close[i-4:(i+1)])/5,2)
# 求取10日简单移动平均数
Sma10 = pd.Series(0.0, index=Close.index)
for i in range(9, len(Close)):
Sma10[i] = round(sum(Close[i-9:(i+1)])/10,2)
# 绘制折线图,即5日移动平均,和10日移动平均
line = (
Line(init_opts=opts.InitOpts(width="1000px",
height="800px",
chart_id="1"
)
)
.add_xaxis(df.Date["2022-8"].values.tolist())
.add_yaxis("收盘价", Close["2022-8"].values.tolist())
.add_yaxis("五日移动平均线", Sma5["2022-8"].values.tolist())
.add_yaxis("十日移动平均线", Sma10["2022-8"].values.tolist())
# 全局配置项内容
.set_global_opts(title_opts=opts.TitleOpts(title="广州酒家2022年8月收盘数据折线图", subtitle="附5&10日MAV图"),
yaxis_opts=opts.AxisOpts(min_="dataMin")
)
.set_series_opts(
linestyle_opts=opts.LineStyleOpts(
width=8,
opacity=1,)
)
)
# 绘制蜡烛图
# 这里需要把数据转化为[[],[],...,[]]的形式 而且,一定要注意,pyecharts要求的数据顺序是:开 收 低 高。
data = [list(i) for i in df.loc["2022-8", ["Open", "Close", "Low", "High"]].values]
kline = (
Kline(init_opts=opts.InitOpts(width="1000px",
height="800px",
chart_id="2",
page_title="广州酒家"))
.add_xaxis(df.Date["2022-8"].values.tolist())
.add_yaxis("广州酒家", data)
.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="广州酒家蜡烛图"),
)
)
# 顺序多图
page = Page(layout=Page.DraggablePageLayout)
page.add(
line,
kline
)
page.render("render.html")
程序会输出一个html文件,我们将其打开后里边的表是按顺序从上向下排列的。然后我们可以对其中的片位置进行拖拽,拖拽到预期的位置,如所示为例。然后点击左上角的SaveConfig,即可得到一个名为chart_config.json的json文件,在左下角位置处。具体如所示:
添加中秋主题
执行代码,即得到了最终的"mycharts_demo.html"文件。界面效果如下,动态的效果可以从上边视频中查看。
中秋快乐!
????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ????꧔ꦿ
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点