文章目录
诚如上一篇文章所说,其实echarts各图形的结构框架基本一致,参数不同而已,故学会一个就能够举一反三、触类旁通了。多类比、多查看文档,你也能学会echarts画图
声明:本系列所述均仅限入门,内容如冰山一角,想了解详情可以访问Pyecharts官方使用文档。关于文本的相关设计和图例的位置之类的上一篇讲过,这篇文章不会过多的提到。本节讲述设置各种各样的饼状图:
基础版本
# -*- coding: utf-8 -*-
# @Time: 2020/12/24 15:04
# @Author: 胡志远
# @Software: PyCharm
from pyecharts import options as opts
from pyecharts.charts import Pie
c = (
Pie()
.add("成绩等第", (("A", 5), ("B", 7), ("C", 10), ("D", 20)))
.set_global_opts(title_opts=opts.TitleOpts(title="这是大标题"
, subtitle="这是小标题"
, pos_left='center'
# 大标题配置
, title_textstyle_opts=opts.TextStyleOpts(color='black'
, font_size=12
)
# 小标题配置
, subtitle_textstyle_opts=opts.TextStyleOpts(color='black'
, font_size=20
, font_weight='bold'
)
)
# 图例设置
, legend_opts=opts.LegendOpts(pos_left='center'
, pos_bottom='bottom'
, orient="horizontal"
)
)
# 标签设置
.set_series_opts(label_opts=opts.LabelOpts(formatter="{a} {b}:{c}"
)
)
.render("pie_base.html")
)
基础版
进阶版本(南丁格尔图)
基础版多少显得有点中规中矩,有个可以更加改进的地方,那就是有的时候饼状图的半径也可以表示一些数据信息。
南丁格尔图是弗罗伦斯·南丁格尔(Florence Nightingale)所发明的。又名为极区图。是一种圆形的直方图。Pyecharts可以画出这种图。
# -*- coding: utf-8 -*-
# @Time: 2020/12/25 0:35
# @Author: 胡志远
# @Software: PyCharm
import pyecharts.options as opts
from pyecharts.charts import Pie
x_data = ["直接访问", "邮件营销", "联盟广告", "视频广告", "搜索引擎"]
y_data = [335, 310, 274, 235, 400]
data_pair = [list(z) for z in zip(x_data, y_data)]
data_pair.sort(key=lambda x: x[1]) # 排序
c = (
# 设置长、宽、背景色
Pie(init_opts=opts.InitOpts(width="1600px", height="800px", bg_color="#2c343c"))
.add(
series_name="访问来源",
data_pair=data_pair,
# 是否展示成南丁格尔图,通过半径区分数据大小。可选择两种模式:
# 'radius' 扇区圆心角展现数据的百分比,半径展现数据的大小。
# 'area' 所有扇区圆心角相同,仅通过半径展现数据大小。
rosetype="radius",
# 饼图的半径,数组的第一项是内半径,第二项是外半径(如果两项均设置则为环状图)
# 默认设置成百分比,相对于容器高宽中较小的一项的一半
radius="55%",
# 饼图的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标
# 默认设置成百分比,设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度
center=["50%", "50%"],
# 标签配置项,参考 `series_options.LabelOpts`
label_opts=opts.LabelOpts(is_show=False, position="center"),
)
.set_global_opts(
# 标题设置项
title_opts=opts.TitleOpts(
title="Customized Pie",
pos_left="center",
pos_top="20",
title_textstyle_opts=opts.TextStyleOpts(color="#fff"),
),
# 图例设置 隐藏
legend_opts=opts.LegendOpts(is_show=False),
)
.set_series_opts(
tooltip_opts=opts.TooltipOpts(
trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"
),
label_opts=opts.LabelOpts(color="rgba(255, 255, 255, 0.3)"),
)
.render("customized_pie.html")
)
进阶版
花里胡哨版
大多数情况下,饼状图最多画成上面这两种的样子就足够了。但是Pyecharts的强大之处就在于它能够画出非常高级的图,比如下面这种:
# -*- coding: utf-8 -*-
# @Time: 2021/1/23 18:15
# @Author: 胡志远
# @Software: PyCharm
import pyecharts.options as opts
from pyecharts.charts import Pie
inner_x_data = ["直达", "营销广告", "搜索引擎"]
inner_y_data = [335, 679, 1548]
inner_data_pair = [list(z) for z in zip(inner_x_data, inner_y_data)]
outer_x_data = ["直达", "营销广告", "搜索引擎", "邮件营销", "联盟广告", "视频广告", "百度", "谷歌", "必应", "其他"]
outer_y_data = [335, 310, 234, 135, 1048, 251, 147, 102]
outer_data_pair = [list(z) for z in zip(outer_x_data, outer_y_data)]
(
Pie(init_opts=opts.InitOpts(width="1600px", height="800px"))
.add(
series_name="访问来源",
data_pair=inner_data_pair,
radius=[0, "30%"],
label_opts=opts.LabelOpts(position="inner"),
)
.add(
series_name="访问来源",
radius=["40%", "55%"],
data_pair=outer_data_pair,
label_opts=opts.LabelOpts(
position="outside",
formatter="{a|{a}}{abg|}\n{hr|}\n {b|{b}: }{c} {per|{d}%} ",
background_color="#eee",
border_color="#aaa",
border_width=1,
border_radius=4,
rich={
"a": {"color": "#999", "lineHeight": 22, "align": "center"},
"abg": {
"backgroundColor": "#e3e3e3",
"width": "100%",
"align": "right",
"height": 22,
"borderRadius": [4, 4, 0, 0],
},
"hr": {
"borderColor": "#aaa",
"width": "100%",
"borderWidth": 0.5,
"height": 0,
},
"b": {"fontSize": 16, "lineHeight": 33},
"per": {
"color": "#eee",
"backgroundColor": "#334455",
"padding": [2, 4],
"borderRadius": 2,
},
},
),
)
.set_global_opts(legend_opts=opts.LegendOpts(pos_left="left", orient="vertical"))
.set_series_opts(
tooltip_opts=opts.TooltipOpts(
trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"
)
)
.render("nested_pies.html")
)
(以上内容参考官方文档)
后续文章即将推出,敬请期待
如果觉得博主写的还不错的,欢迎点赞、评论、加关注,大家的访问就是博主更新文章不竭的源动力!