Pyecharts基础绘图

Pyecharts基础绘图

1.Pyecharts模块常用配置

Pyecharts模块常见的配置项有以下几种:

  • 初始化配置项(InitOpts)
  • 标题配置项(TitleOpts)
  • 图例配置项(LegendOpts)
  • 工具箱配置项(ToolboxOpts)
  • 视觉映射配置项(VisualMapOpts)
  • 提示框配置项(TooltipOpts)
  • 区域缩放配置项(DataZoomOpts)

全局配置:通过set_global_opts()方法进行设置,可以修改图表的默认配置,如:主题、自动调整大小、宽度、高度等。

系列配置:通过set_series_opts()方法进行设置,用于控制每个系列的图表样式和数据,如线条样式、柱状图颜色、标签格式等。

可通过全局配置项控制以下区域:

8061266-5abd83c6576fd21e

本文所有内容基于Pyecharts2.0.9版本,Pyecharts版本查询方式如下:

1
2
import pyecharts
print(pyecharts.__version__)

本文所有图片均在Jupyter Lab中完成,在Jupyter Lab中显示图片需要在代码前面添加以下内容:

1
2
from pyecharts.globals import CurrentConfig,NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB

2.柱状图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.charts import Bar
import pyecharts.options as opts

cate =['华为', '小米', '苹果', 'OPPO', 'ViVo', '魅族']
data1 = [143, 155, 200, 100, 88, 50]
data2 = [100, 120, 400, 110, 94, 30]

bar = (Bar()
.add_xaxis(cate)
.add_yaxis('电商渠道', data1)
.add_yaxis('门店',data2)
.set_global_opts(
title_opts=opts.TitleOpts(title='Bar-示例',subtitle='Bar'),
legend_opts=opts.LegendOpts(is_show=True))
.set_series_opts(
label_opts=opts.LabelOpts(position='top'))
)
bar.load_javascript()
1
2
# 静态图片的展示需要单独使用一个cell
bar.render_notebook()

image-20251027233343196

3.饼图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from pyecharts.charts import Pie
import pyecharts.options as opts

cate =['华为', '小米', '苹果', 'OPPO', 'ViVo', '魅族']
data1 = [143, 155, 200, 100, 88, 50]
data2 = [100, 120, 400, 110, 94, 30]

pie = (Pie()
.add("",[list(z) for z in zip(cate,data1)],
radius=['30%','75%'],
rosetype='radius')
.set_global_opts(title_opts=opts.TitleOpts(title='Pie-示例',subtitle='副标题'))
.set_series_opts(label_opts=opts.LabelOpts(formatter='{a}:{d}%'))
)
pie.load_javascript()
1
pie.render_notebook()

image-20251028010849470

4.折线图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from pyecharts.charts import Line
import pyecharts.options as opts

cate =['华为', '小米', '苹果', 'OPPO', 'ViVo', '魅族']
data1 = [143, 155, 200, 100, 88, 50]
data2 = [100, 120, 400, 110, 94, 30]

line = (Line()
.add_xaxis(cate)
.add_yaxis('电商渠道',data1,
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_='average')]))
.add_yaxis('门店',data2,
is_smooth=True,
markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(name='自定义标记点',
coord=[cate[2],data2[2]],value=data2[2])])
)
.set_global_opts(title_opts=opts.TitleOpts(title='Line-示例',subtitle='副标题'))
)
line.load_javascript()
1
line.render_notebook()

image-20251028013432445

5.漏斗图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from pyecharts.charts import Funnel

cate = ['访问', '注册', '加入购物车', '提交订单', '付款成功']
data = [99999, 50000, 30000, 15000, 5000]

funnel = (Funnel()
.add('用户数',[list(z) for z in zip(cate,data)],
sort_='descending',
min_= 0,
max_= 99999,
label_opts=opts.LabelOpts(position='inside', formatter="{b}:{c}"))
.set_global_opts(title_opts=opts.TitleOpts(title='漏斗图',subtitle='副标题'))
)
funnel.load_javascript()
1
funnel.render_notebook()

image-20251028014048342

6.热度图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from pyecharts.charts import HeatMap
from pyecharts.faker import Faker
import random

data = [[i, j,random.randint(0, 50)] for i in range(24) for j in range(7)]
heat = (HeatMap()
.add_xaxis(Faker.clock)
.add_yaxis('访客数',
Faker.week,
data,
label_opts=opts.LabelOpts(is_show=True,position='inside'))
.set_global_opts(
title_opts=opts.TitleOpts(title='HeatMap-示例',subtitle='副标题'),
visualmap_opts=opts.VisualMapOpts(),
legend_opts=opts.LegendOpts(is_show=False))
)
heat.load_javascript()
1
heat.render_notebook()

image-20251028014848228

7.日历图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from pyecharts.charts import Calendar
import datetime

begin = datetime.date(2025, 1, 1)
end = datetime.date(2025, 12, 31)
data = [[str(begin + datetime.timedelta(days=i)),random.randint(1000,30000)]
for i in range((end-begin).days + 1)]

calendar = (Calendar()
.add('微信步数',data,
calendar_opts=opts.CalendarOpts(range_='2025'))
.set_global_opts(
title_opts=opts.TitleOpts(title='Calendar-示例', subtitle='副标题'),
legend_opts=opts.LegendOpts(is_show=False),
visualmap_opts=opts.VisualMapOpts(
max_= 30000,
min_=1000,
orient='horizontal',
is_piecewise=True,
pos_top='230px',
pos_left= '100px'
)
)
)
calendar.load_javascript()
1
calendar.render_notebook()

image-20251028015858077

8.3D散点图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from pyecharts.charts import Scatter3D
from pyecharts import options as opts
from pyecharts.faker import Faker
import random

data = [[random.randint(0,100),random.randint(0,100),random.randint(0,100)] for _ in range(1000)]

scatter3D = (Scatter3D()
.add('',data)
.set_global_opts(
title_opts=opts.TitleOpts(title='Scatter3D-示例',subtitle='副标题'),
visualmap_opts=opts.VisualMapOpts(range_color=Faker.visual_color))
)
scatter3D.load_javascript()
1
scatter3D.render_notebook()

image-20251028020443527

9.XY轴翻转

1
2
3
4
5
6
7
8
9
bar = (Bar()
.add_xaxis(cate)
.add_yaxis('电商渠道', data1)
.add_yaxis('门店', data2)
.set_global_opts(title_opts=opts.TitleOpts(title='XY轴翻转-示例', subtitle='副标题'))
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.reversal_axis()
)
bar.load_javascript()
1
bar.render_notebook()

image-20251028020941128

10.组合图表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
province = ['武汉', '十堰', '鄂州', '宜昌', '荆州', '孝感', '黄石', '咸宁', '仙桃']
data = [324, 125, 145, 216, 241, 244, 156, 278, 169]

bar = (Bar()
.add_xaxis(province)
.add_yaxis('营业额', data)
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(
title_opts=opts.TitleOpts(title='Grid-Bar')
)
)
line = (Line()
.add_xaxis(province)
.add_yaxis('营业额', data,
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_='average')]))
.set_global_opts(title_opts=opts.TitleOpts(title='Grid-Line', pos_top='48%'))
)
grid = (Grid()
.add(bar, grid_opts=opts.GridOpts(pos_bottom="60%"))
.add(line,grid_opts=opts.GridOpts(pos_top='60%'))
)
grid.load_javascript()
1
grid.render_notebook()

image-20251028021121484

11.时间轴图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from pyecharts.charts import Bar,Timeline
import pyecharts.options as opts
import random

cate = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Meizu']
tl = Timeline()
for i in range(2015, 2025):
bar = (Bar()
.add_xaxis(cate)
.add_yaxis('电商渠道', [random.randint(50,200) for _ in cate])
.add_yaxis('门店', [random.randint(100, 300) for _ in cate])
.set_global_opts(title_opts=opts.TitleOpts("各品牌手机{}年销量".format(i)))
)
tl.add(bar,"{}年".format(i))
tl.load_javascript()
1
tl.render_notebook()

image-20251028022919870


Pyecharts基础绘图
http://example.com/2025/10/27/pyecharts基础绘图/
作者
David
发布于
2025年10月27日
许可协议