Pyecharts K 线图语法
K 线图,又叫做 “蜡烛图”。我们都知道股市中包含 4 个指标:开盘价、收盘价、最低价、最高价,其中 K 线图就是围绕这 4 个指标来展开的一种图表。
在 Pyecharts 中,我们可以使用 Kline 这个模块来绘制一个 K 线图。
语法:
k = Kline()
k.add_xaxis(xaxis_data)
k.add_yaxis(series_name, y_axis)
说明:
Kline() 用于创建一个 K 线图对象,add_xaxis() 方法用于添加 x 轴数据,add_yaxis() 方法用于添加 y 轴数据。
示例 1:K 线图
import numpy as np
import pandas as pd
from pyecharts.charts import Kline
# 数据
data = [
['2025-01-01', 197, 165, 156, 200],
['2025-01-02', 161, 164, 155, 188],
['2025-01-03', 146, 214, 100, 215],
['2025-01-04', 228, 233, 215, 236],
['2025-01-05', 230, 226, 220, 231]
]
df = pd.DataFrame(data, columns=['日期', '开盘', '收盘', '最低', '最高'])
# 获取日期部分
dates = list(df['日期'])
# 设置行名
df.set_index('日期', inplace=True)
# 获取数据部分
df_array = np.array(df)
df_list = df_array.tolist()
# 绘图
k = Kline()
k.add_xaxis(xaxis_data=dates)
k.add_yaxis(series_name='', y_axis=df_list)
# 渲染
k.render()
运行生成的 render.html,浏览器效果如下图所示。

分析:
K 线图的每一项代表的是某个时间的股市数据,当我们鼠标移到某一项时,就会显示该时间的开盘价、收盘价、最低价、最高价,如下图所示。

Pyecharts K 线图案例
当前项目下的 data 文件夹中有一个 stock.csv 文件,项目结构如下图所示。stock.csv 文件保存的是一个月内的股市数据,部分内容如下图所示。


示例 2:基本 K 线图
import numpy as np
import pandas as pd
from pyecharts.charts import Kline
# 读取文件
df = pd.read_csv(r'data/stock.csv')
# 获取日期部分
dates = list(df['日期'])
# 设置行名
df.set_index('日期', inplace=True)
# 获取数据部分
df_array = np.array(df)
df_list = df_array.tolist()
# 绘图
k = Kline()
k.add_xaxis(xaxis_data=dates)
k.add_yaxis(series_name='', y_axis=df_list)
# 渲染
k.render()
运行生成的 render.html,浏览器效果如下图所示。

示例 3:添加标记线
import numpy as np
import pandas as pd
from pyecharts.charts import Kline
import pyecharts.options as opts
# 读取文件
df = pd.read_csv(r'data/stock.csv')
# 获取日期部分
dates = list(df['日期'])
# 设置行名
df.set_index('日期', inplace=True)
# 获取数据部分
df_array = np.array(df)
df_list = df_array.tolist()
# 绘图
k = Kline()
k.add_xaxis(xaxis_data=dates)
k.add_yaxis(series_name='', y_axis=df_list)
# 添加标记线
k.set_series_opts(markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_='max')]))
# 渲染
k.render()
运行生成的 render.html,浏览器效果如下图所示。

示例 4:添加分割区域
import numpy as np
import pandas as pd
from pyecharts.charts import Kline
import pyecharts.options as opts
# 读取文件
df = pd.read_csv(r'data/stock.csv')
# 获取日期部分
dates = list(df['日期'])
# 设置行名
df.set_index('日期', inplace=True)
# 获取数据部分
df_array = np.array(df)
df_list = df_array.tolist()
# 绘图
k = Kline()
k.add_xaxis(xaxis_data=dates)
k.add_yaxis(series_name='', y_axis=df_list)
# 添加分割区域
k.set_global_opts(
yaxis_opts=opts.AxisOpts(
is_scale=True,
splitarea_opts=opts.SplitAreaOpts(
is_show=True,
areastyle_opts=opts.AreaStyleOpts(opacity=1)
),
)
)
# 渲染
k.render()
运行生成的 render.html,浏览器效果如下图所示。

示例 5:添加区域缩放
import numpy as np
import pandas as pd
from pyecharts.charts import Kline
import pyecharts.options as opts
# 读取文件
df = pd.read_csv(r'data/stock.csv')
# 获取日期部分
dates = list(df['日期'])
# 设置行名
df.set_index('日期', inplace=True)
# 获取数据部分
df_array = np.array(df)
df_list = df_array.tolist()
# 绘图
k = Kline()
k.add_xaxis(xaxis_data=dates)
k.add_yaxis(series_name='', y_axis=df_list)
# 添加区域缩放
k.set_global_opts(
datazoom_opts=[opts.DataZoomOpts(pos_bottom='-2%')]
)
# 渲染
k.render()
运行生成的 render.html,浏览器效果如下图所示。

