pyecharts を使用して K 折れ線グラフの高度なバージョンを描画する
導入
キャンドルスティック チャートは、ローソク足チャートとも呼ばれ、金融市場の価格傾向や取引データを視覚化するために使用されるチャート タイプです。これは、株式、外国為替、先物などの金融市場で最も一般的に使用されているテクニカル分析ツールの 1 つであり、価格の変化、トレンド、市場センチメントに関する重要な情報を提供できます。K ライン チャートには、通常、始値、終値、最高値、最低価格の 4 つの主要な価格ポイントが含まれています。これらの価格ポイントは、価格の傾向を視覚的に観察しやすくするために、長方形 (ローソク足) または垂直線分を形成します。
Python のデータ視覚化ツールである pyecharts は、K 線グラフの描画にも役立ちます。この記事では、pyecharts を使用して K 折れ線グラフを描画する方法を紹介します。
K 折れ線グラフの一般的な構成クラス
- Kline: K ライン チャート クラス。K ライン チャート オブジェクトの作成に使用されます。
- opts.AxisOpts: 横座標軸と縦座標軸のスタイルとプロパティを設定するために使用される軸構成クラス。
- opts.DataZoomOpts: データ ズーム構成クラス。データ ズームのスタイルとプロパティを設定するために使用されます。
- opts.MarkLineOpts: マークラインのスタイルと属性を設定するために使用されるマークライン構成クラス。
- opts.MarkLineItem: MarkLineItem クラス。マークのタイプと値を設定するために使用されます。
- opts.TooltipOpts: プロンプト ボックスのスタイルと属性を設定するために使用されるプロンプト ボックス構成クラス。
上記は、一般的に使用される構成クラスの一部であり、K 折れ線グラフのスタイルとインタラクティブな効果を設定するために構成できます。特定のニーズに応じて、これらの構成クラスを柔軟に使用して、必要な K 折れ線グラフをカスタマイズできます。他の構成クラスについては、ここでは 1 つずつ紹介しません。
基本的な K 折れ線グラフを描画する
まず、簡単な K 折れ線グラフを描画してみましょう。サンプル コードは次のとおりです。
from pyecharts import options as opts
from pyecharts.charts import Kline
# 准备K线图的数据
x_data = ["2022-09-01", "2022-09-02", "2022-09-03", "2022-09-04", "2022-09-05"]
y_data = [
[90, 120, 80, 110], # 第一天的K线数据:开盘价、最高价、最低价、收盘价
[110, 130, 100, 120], # 第二天的K线数据
[130, 140, 90, 110], # 第三天的K线数据
[110, 130, 100, 120], # 第四天的K线数据
[120, 140, 90, 110], # 第五天的K线数据
]
# 创建K线图对象
kline = (
Kline()
.add_xaxis(xaxis_data=x_data) # 设置x轴数据
.add_yaxis(
series_name="K线图", # 设置数据系列的名称
y_axis=y_data, # 设置y轴数据
itemstyle_opts=opts.ItemStyleOpts(color="blue", color0="green"), # 设置K线图的颜色
)
.set_global_opts(
xaxis_opts=opts.AxisOpts(is_scale=True), # 设置x轴选项,使其自适应
yaxis_opts=opts.AxisOpts(is_scale=True), # 设置y轴选项,使其自适应
title_opts=opts.TitleOpts(title="K线图示例"), # 设置标题选项
)
)
# 渲染图表
kline.render("kline.html")
スクリプトを実行すると、次のような K 線グラフが描画されます。
もちろん、私たちが通常見ている K 線グラフはより複雑です。K 線グラフを見るのに役立つ他のグラフィックや線があります。pyecharts は補助線を引くのにも役立ちます。コードは次のとおりです:
import random
from pyecharts import options as opts
from pyecharts.charts import Kline
# 随机数据
data = []
# 使用嵌套的循环结构生成双层随机嵌套列表
for _ in range(30):
inner_list = []
# 内层列表个数
for _ in range(4):
random_num = random.randint(3000, 3500)
inner_list.append(random_num)
data.append(inner_list)
# 创建K线图对象
c = (
Kline()
# 添加横坐标数据
.add_xaxis(["2022/9/{}".format(i + 1) for i in range(30)])
# 添加纵坐标数据
.add_yaxis(
"kline",
data,
# 设置标线配置项,标记最大值
markline_opts=opts.MarkLineOpts(
data=[opts.MarkLineItem(type_="max", value_dim="close")]
),
)
# 设置全局配置项
.set_global_opts(
xaxis_opts=opts.AxisOpts(is_scale=True), # 设置横坐标��配置项,is_scale=True表示自适应刻度
yaxis_opts=opts.AxisOpts(
is_scale=True, # 设置纵坐标轴配置项,is_scale=True表示自适应刻度
splitarea_opts=opts.SplitAreaOpts(
is_show=True, # 设置分割区域配置项,is_show=True表示显示分割区域
areastyle_opts=opts.AreaStyleOpts(opacity=1) # 设置分割区域样式配置项,opacity=1表示不透明
),
),
title_opts=opts.TitleOpts(title="K线图示例2"), # 设置标题配置项
)
)
# 渲染为HTML文件
c.render("K线图示例2.html")
スクリプトを実行すると、次のようなイメージが生成されます。
多くの場合、短期の価格トレンドを確認したいことがあります。上記に基づいて、マウスのスライドとズームの効果を追加して、短期の価格を簡単に表示できます。コードは次のとおりです:
import random
from pyecharts import options as opts
from pyecharts.charts import Kline
# 随机数据
data = []
# 使用嵌套的循环结构生成双层随机嵌套列表
for _ in range(30):
inner_list = []
# 内层列表个数
for _ in range(4):
random_num = random.randint(3000, 3500)
inner_list.append(random_num)
data.append(inner_list)
# 创建K线图对象
c = (
Kline()
# 添加横坐标数据
.add_xaxis(["2022/9/{}".format(i + 1) for i in range(30)])
# 添加纵坐标数据
.add_yaxis(
"kline",
data,
# 设置图表元素样式
itemstyle_opts=opts.ItemStyleOpts(
color="#ec0000",
color0="#00da3c",
border_color="#8A0000",
border_color0="#008F28",
),
)
# 设置全局配置项
.set_global_opts(
# 设置横坐标轴配置项,is_scale=True表示自适应刻度
xaxis_opts=opts.AxisOpts(is_scale=True),
# 设置纵坐标轴配置项,is_scale=True表示自适应刻度
yaxis_opts=opts.AxisOpts(
is_scale=True,
# 设置分割区域配置项,is_show=True表示显示分割区域
splitarea_opts=opts.SplitAreaOpts(
is_show=True,
# 设置分割区域样式配置项,opacity=1表示不透明
areastyle_opts=opts.AreaStyleOpts(opacity=1)
),
),
# 设置数据缩放配置项,type_="inside"表示内置缩放
datazoom_opts=[opts.DataZoomOpts(type_="inside")],
# 设置标题配置项,title="K线图鼠标缩放"为标题内容
title_opts=opts.TitleOpts(title="K线图示例3"),
)
)
# 渲染为HTML文件
c.render("K线图示例3.html")
以下に示すようにスクリプトを実行すると、生成された画像上でマウスをスライドさせて、特定の日の価格変更情報を表示できます。
長時間の画像を表示する必要がある場合は、マウスのスケーリングが面倒になる場合がありますが、スライダーを使用して表示を容易にすることができます。具体的な実装コードは次のとおりです。
import random
from pyecharts import options as opts
from pyecharts.charts import Kline
# 随机数据
data = []
# 使用嵌套的循环结构生成双层随机嵌套列表
for _ in range(30):
inner_list = []
# 内层列表个数
for _ in range(4):
random_num = random.randint(3000, 3500)
inner_list.append(random_num)
data.append(inner_list)
# 创建K线图对象
c = (
Kline()
# 添加横坐标数据
.add_xaxis(["2022/9/{}".format(i + 1) for i in range(30)])
# 添加纵坐标数据
.add_yaxis("kline", data)
# 设置全局配置项
.set_global_opts(
xaxis_opts=opts.AxisOpts(is_scale=True), # 设置横坐标轴配置项,is_scale=True表示自适应刻度
yaxis_opts=opts.AxisOpts(
is_scale=True, # 设置纵坐标轴配置项,is_scale=True表示自适应刻度
splitarea_opts=opts.SplitAreaOpts(
is_show=True, # 设置分割区域配置项,is_show=True表示显示分割区域
areastyle_opts=opts.AreaStyleOpts(opacity=1) # 设置分割区域样式配置项,opacity=1表示不透明
),
),
datazoom_opts=[opts.DataZoomOpts()], # 设置数据缩放配置项位置在底部偏下
title_opts=opts.TitleOpts(title="K线图示例4"), # 设置标题配置项
)
)
# 渲染为HTML文件
c.render("K线图示例4.html")
スクリプトを実行すると、次のようなイメージが生成されます。