目前来讲,pyecharts相对matplotlib来说,明显的优点多些,加上是我们国家的百度开源的项目,
现在pyecharts分0.5和1的版本,由于0.5版本不再更新与维护,这里记录1的版本语法
之前学习过一段时间echarts,也学了段时间pyecharts,现在打算整理下笔记,分享促进爱好者们一起学习
10个小例子
type_这个属性注意加下划线 , pyecharts可以使用单引号’ '也可以使用双引号""存储变量值,
我们看到的数据每次运行都不相同,是因为faker模块每次都生成新的随机数据
from pyecharts.charts import Line
import pyecharts.options as opts
from pyecharts.faker import Faker
说明上述模块:第1行代码:从pyecharts.charts导入Line模块。Line是折线图模块,是用来生成折线图的。
第2行代码:导入pyecharts模块下的子模块options取别名为opts,使用 options 配置项,在 pyecharts 中,一切皆 Options。
第3行代码:从faker中导入Faker模块,这个模块是用来生成随机数据的,即我们学习当中不用准备模拟数据。
'''
set_global_opts是设置全局配置,title_opts是属性,这里通过别名opts调用options里的TitleOpts方法设置图表标题,title也是固定的属性
'''
line1=(
Line() # 生成line类型图表
.add_xaxis(Faker.choose()) # 添加x轴,Faker.choose()是使用faker的随机数据生成x轴标签
.add_yaxis('数据1',Faker.values()) # 添加y轴,Faker.values()是使用faker的随机数据生成y轴数值
.add_yaxis('数据2',Faker.values())
.set_global_opts(title_opts=opts.TitleOpts(title='Line 基本示例'))
)
line1.render('pyecharts-line.html') # 生成一个名为pyecharts-line.html的网页文件,打开网页就是下图
line2=(
Line()
.add_xaxis(Faker.values())
.add_yaxis('数据1',Faker.values())
.add_yaxis('数据2',Faker.values())
.set_global_opts(
title_opts=opts.TitleOpts(title='Line 数值x轴'),
xaxis_opts=opts.AxisOpts(type_='value') # 设置x轴类型属性为value数值类型
)
)
line2.render('pyecharts-line.html')
y=Faker.values() # 这里先把随机数据赋给y变量做y轴数值
y[3],y[5]=None,None
line3=(
Line()
.add_xaxis(Faker.choose())
.add_yaxis('数据1',y,is_connect_nones=True)# 这里设置连接空数据
.set_global_opts(title_opts=opts.TitleOpts(title='line 连接空数据'))
)
line3.render('pyecharts-line.html')
line4=(
Line()
.add_xaxis(Faker.choose())
.add_yaxis('数据1',Faker.values(),is_smooth=True)# 设置线为平滑的
.add_yaxis('数据2',Faker.values(),is_smooth=True)
.set_global_opts(title_opts=opts.TitleOpts(title='line smooth'))
)
line4.render('pyecharts-line.html')
line5=(
Line()
.add_xaxis(xaxis_data=['一','二','三','四','五','六','七','八','九'])
.add_yaxis(
'2的指数',
y_axis=[1,2,4,8,16,32,64,128,256],
linestyle_opts=opts.LineStyleOpts(width=2) # 线宽度设置为2
)
.add_yaxis(
'3的指数',
y_axis=[1,3,9,27,81,247,741,2223,6669],
linestyle_opts=opts.LineStyleOpts(width=2),
)
.set_global_opts(
title_opts=opts.TitleOpts(title='line 对数轴示例'),
xaxis_opts=opts.AxisOpts(name='x'),# 设置x轴名字属性
yaxis_opts=opts.AxisOpts(
type_='log', # 设置类型
name='y', # 设置y轴名字属性
splitline_opts=opts.SplitLineOpts(is_show=True),# 这里将分割线显示
is_scale=True # 这里范围设置true是显示线的顶端,设置为False的话就只会显示前2个数值
)
)
)
line5.render('pyecharts-line.html')
line6=(
Line()
.add_xaxis(Faker.choose())
.add_yaxis(
'数据1',
Faker.values(),
# 使用markpoint标记点属性,数据类型设置为min会最小值生成标记点
markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_='min')])
)
.add_yaxis(
'数据2',
Faker.values(),
# 使用max类型标记点
markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_='max')])
)
.set_global_opts(title_opts=opts.TitleOpts(title='Line-MarkPoint'))
)
line6.render('pyecharts-line.html')
x,y=Faker.choose(),Faker.values()
line7=(
Line()
.add_xaxis(x)
.add_yaxis(
'数据1',
y,
markpoint_opts=opts.MarkPointOpts(
# 使用coord这个属性设置自定义标记点数值,这是的2代表3,编程列表索引顺序一般1是从0开始的
data=[opts.MarkPointItem(name='自定义标记点',coord=[x[2],y[2]],value=y[2])]
)
)
.set_global_opts(title_opts=opts.TitleOpts(title='Line MarkPoint 自定义'))
)
line7.render('pyecharts-line.html')
line8=(
Line()
.add_xaxis(Faker.choose())
.add_yaxis(
'数据1',
Faker.values(),
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_='average')]),
)
.add_yaxis(
'数据2',
Faker.values(),
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_='average')]),
)
.set_global_opts(title_opts=opts.TitleOpts(title='Line MarkLine')) # 使用标记线
)
line8.render('pyecharts-line.html'
line9=(
Line()
.add_xaxis(Faker.choose())
.add_yaxis('数据1',Faker.values(),is_step=True) # 数值设置step脚步即折线图变阶梯图
.set_global_opts(title_opts=opts.TitleOpts(title='Line 阶梯图'))
)
line9.render('pyecharts-line.html')
折线图项目为线,柱状图的项目就是柱子,饼图就是扇区
line10=(
Line()
.add_xaxis(xaxis_data=Faker.choose())
.add_yaxis(
'数据1',
Faker.values(),
symbol='square', # 线数值的标志,也可以为菱形、三角形、矩形等,这是设置为正方形
symbol_size=15, # 标志大小
# 设置线样式,颜色color为黑色,宽度width为5,类型为虚线,也可以设置实线、点线等
linestyle_opts=opts.LineStyleOpts(color='black',width=5,type_='dashed'),
label_opts=opts.LabelOpts(is_show=False),
itemstyle_opts=opts.ItemStyleOpts(
border_width=4,border_color='blue',color='red' # 设置边框标志宽度,边框颜色和边框里面颜色
)
)
.set_global_opts(
title_opts=opts.TitleOpts(title='Line ItemStyle'),
xaxis_opts=opts.AxisOpts(type_='category'), # 设置x轴类型为种类
yaxis_opts=opts.AxisOpts(
type_='value',
axistick_opts=opts.AxisTickOpts(is_show=True),
splitline_opts=opts.SplitLineOpts(is_show=True)
),
tooltip_opts=opts.TooltipOpts(is_show=False)
)
)
line10.render('pyecharts-line.html')
class Bar(
init_opts: opts.InitOpts = opts.InitOpts()
)
def add_yaxis(
# 系列名称,用于 tooltip 的显示,legend 的图例筛选。
series_name: str,
# 系列数据
yaxis_data: Sequence[Numeric, opts.BarItem, dict],
# 是否选中图例
is_selected: bool = True,
# 使用的 x 轴的 index,在单个图表实例中存在多个 x 轴的时候有用。
xaxis_index: Optional[Numeric] = None,
# 使用的 y 轴的 index,在单个图表实例中存在多个 y 轴的时候有用。
yaxis_index: Optional[Numeric] = None,
# 系列 label 颜色
color: Optional[str] = None,
# 数据堆叠,同个类目轴上系列配置相同的 stack 值可以堆叠放置。
stack: Optional[str] = None,
# 同一系列的柱间距离,默认为类目间距的 20%,可设固定值
category_gap: Union[Numeric, str] = "20%",
# 不同系列的柱间距离,为百分比(如 '30%',表示柱子宽度的 30%)。
# 如果想要两个系列的柱子重叠,可以设置 gap 为 '-100%'。这在用柱子做背景的时候有用。
gap: Optional[str] = None,
# 标签配置项,参考 `series_options.LabelOpts`
label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(),
# 标记点配置项,参考 `series_options.MarkPointOpts`
markpoint_opts: Union[opts.MarkPointOpts, dict, None] = None,
# 标记线配置项,参考 `series_options.MarkLineOpts`
markline_opts: Union[opts.MarkLineOpts, dict, None] = None,
# 提示框组件配置项,参考 `series_options.TooltipOpts`
tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,
# 图元样式配置项,参考 `series_options.ItemStyleOpts`
itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,
)
class BarItem(
# 数据项名称。
name: Optional[str] = None,
# 单个数据项的数值。
value: Optional[Numeric] = None,
# 单个柱条文本的样式设置,参考 `series_options.LabelOpts`。
label_opts: Union[LabelOpts, dict, None] = None,
# 图元样式配置项,参考 `series_options.ItemStyleOpts`
itemstyle_opts: Union[ItemStyleOpts, dict, None] = None,
# 提示框组件配置项,参考 `series_options.TooltipOpts`
tooltip_opts: Union[TooltipOpts, dict, None] = None,
)