之前使用过pycharts进行汇图,最近更新本地的pyecharts库,使用之前的代码时,发现之前的方法不好使了,报错:cannot import name ‘Pie’ from ‘pyecharts’ 。找了下官方文档看了下,发现其现在有两个版本,v0.5.X和v1两个大版本,v0.5.X和v1间不兼容,v1是一个全新的版本。由于默认安装的是最新版本,之前的方法换了地方。比如之前常用的pie图、bar图等,现在需要使用如下方法引用:

1from pyecharts.charts import Bar, Grid, Pie, Map, WordCloud

当然如果觉得不习惯或者不想修改,也可以使用老版本的,把pyecharts卸载后,安装老的版本:

1pip install pyecharts==0.5.11
2# 豆瓣源
3pip install -i https://pypi.doubanio.com/simple/ pyecharts==0.5.11

这里以pie饼图为例,给下老版本和新版本的用法。

一、老版本使用

pie.add()方法使用的语法为:

1add(name, attr, value,
2    radius=None,
3    center=None,
4    rosetype=None, **kwargs)

各参数的意义是:

name -> str   图例名称

attr -> list 属性名称
value -> list 属性所对应的值
radius -> list 饼图的半径,数组的第一项是内半径,第二项是外半径,默认为 [0, 75],默认设置成百分比,相对于容器高宽中较小的一项的一半
center -> list
饼图的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标,默认为 [50, 50]
默认设置成百分比,设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度
rosetype -> str
是否展示成南丁格尔图,通过半径区分数据大小,有’radius’和’area’两种模式。默认为’radius’
radius:扇区圆心角展现数据的百分比,半径展现数据的大小
area:所有扇区圆心角相同,仅通过半径展现数据大小

1、基本饼图

 1from pyecharts import Pie
 2attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
 3v1 = [11, 12, 13, 10, 10, 10]
 4pie = Pie("饼图示例")
 5pie.add(
 6    "",
 7    attr,
 8    v1,
 9    is_label_show=True,
10    is_more_utils=True
11)
12pie.render(path="Bing1.html")

2、环形饼图

 1from pyecharts import Pie
 2attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
 3v1 = [11, 12, 13, 10, 10, 10]
 4pie = Pie("饼图-圆环图示例", title_pos='center')
 5pie.add(
 6    "",
 7    attr,
 8    v1,
 9    radius=[40, 75],
10    label_text_color=None,
11    is_label_show=True,
12    is_more_utils=True,
13    legend_orient="vertical",
14    legend_pos="left",
15)
16pie.render(path="Bing2.html")

3、多饼图

 1from pyecharts import Pie
 2from pyecharts import Style
 3# 否则会遇到错误NameError: name 'Style' is not defined
 4pie = Pie('各类电影中"好片"所占的比例', "数据来着豆瓣", title_pos='center')
 5style = Style()
 6pie_style = style.add(
 7    label_pos="center",
 8    is_label_show=True,
 9    label_text_color=None
10)
11pie.add(
12    "", ["剧情", ""], [25, 75], center=[10, 30], radius=[18, 24], **pie_style
13)
14pie.add(
15    "", ["奇幻", ""], [24, 76], center=[30, 30], radius=[18, 24], **pie_style
16)
17pie.add(
18    "", ["爱情", ""], [14, 86], center=[50, 30], radius=[18, 24], **pie_style
19)
20pie.add(
21    "", ["惊悚", ""], [11, 89], center=[70, 30], radius=[18, 24], **pie_style
22)
23pie.add(
24    "", ["冒险", ""], [27, 73], center=[90, 30], radius=[18, 24], **pie_style
25)
26pie.add(
27    "", ["动作", ""], [15, 85], center=[10, 70], radius=[18, 24], **pie_style
28)
29pie.add(
30    "", ["喜剧", ""], [54, 46], center=[30, 70], radius=[18, 24], **pie_style
31)
32pie.add(
33    "", ["科幻", ""], [26, 74], center=[50, 70], radius=[18, 24], **pie_style
34)
35pie.add(
36    "", ["悬疑", ""], [25, 75], center=[70, 70], radius=[18, 24], **pie_style
37)
38pie.add(
39    "",
40    ["犯罪", ""],
41    [28, 72],
42    center=[90, 70],
43    radius=[18, 24],
44    legend_top="center",
45    **pie_style
46)
47pie.render(path="Bing4.html")

以上内容主要来自:python中pyecharts绘制饼图

二、新版本使用

1、基本示例

 1from pyecharts import options as opts
 2from pyecharts.charts import Pie
 3from pyecharts.faker import Faker
 4from pyecharts.globals import ThemeType
 5c = (
 6     #设置主题
 7    Pie(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
 8    .add(
 9        # 系列名称
10        "",
11        # 系列数据项  格式为 [(key1, value1), (key2, value2)]
12        [list(z) for z in zip(Faker.choose(), Faker.values())],
13        # 系列 label 颜色  Optional[str]
14        color = None,
15        # 饼图的半径,数组的第一项是内半径,第二项是外半径
16        # 默认设置成百分比,相对于容器高宽中较小的一项的一半
17        # Optional[Sequence]
18        radius = None,
19        # 饼图的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标
20        # 默认设置成百分比,设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度
21        # Optional[Sequence]
22        center = None,
23        # 是否展示成南丁格尔图,通过半径区分数据大小,有'radius'和'area'两种模式。
24        # radius:扇区圆心角展现数据的百分比,半径展现数据的大小
25        # area:所有扇区圆心角相同,仅通过半径展现数据大小
26        # Optional[str]
27        rosetype = None,
28        # 饼图的扇区是否是顺时针排布。
29        is_clockwise = True,
30        # 标签配置项,参考 `series_options.LabelOpts`
31        label_opts = opts.LabelOpts(),
32        # 提示框组件配置项,参考 `series_options.TooltipOpts`
33        tooltip_opts = None,
34        # 图元样式配置项,参考 `series_options.ItemStyleOpts`
35        itemstyle_opts = None,
36        # 可以定义 data 的哪个维度被编码成什么。
37        # types.Union[types.JSFunc, dict, None]
38        encode = None,
39        )
40    # 全局配置项
41    # 设置标题
42    .set_global_opts(title_opts=opts.TitleOpts(title="Pie-基本示例"))
43    # 系统配置项
44    # 设置标签
45    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
46    .render("pie_base.html")
47)

2、环装图

 1from pyecharts import options as opts
 2from pyecharts.charts import Pie
 3from pyecharts.globals import ThemeType
 4from pyecharts.faker import Faker
 5c = (
 6    Pie(init_opts=opts.InitOpts(theme=ThemeType.MACARONS))
 7    .add(
 8        "",
 9        [list(z) for z in zip(Faker.choose(), Faker.values())],
10        # 饼图的半径,数组的第一项是内半径,第二项是外半径
11        # 默认设置成百分比,相对于容器高宽中较小的一项的一半
12        radius=["40%", "75%"],
13    )
14    .set_global_opts(
15        title_opts=opts.TitleOpts(title="Pie-Radius"),
16        legend_opts=opts.LegendOpts(
17            orient="vertical", #图例垂直放置
18            pos_top="15%",# 图例位置调整
19            pos_left="2%"),
20    )
21    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
22    .render("pie_radius.html")
23)

3、富文本

 1from pyecharts import options as opts
 2from pyecharts.charts import Pie
 3from pyecharts.faker import Faker
 4from pyecharts.globals import ThemeType
 5c = (
 6    Pie(init_opts=opts.InitOpts(theme=ThemeType.MACARONS))
 7    .add(
 8        "",  # 系列名称
 9        # 系列数据项,格式为 [(key1, value1), (key2, value2)]
10        [list(z) for z in zip(Faker.choose(), Faker.values())],
11        # 饼图的半径,数组的第一项是内半径,第二项是外半径
12        # 默认设置成百分比,相对于容器高宽中较小的一项的一半
13        radius=["40%", "55%"],
14        #标签配置项
15        label_opts=opts.LabelOpts(
16            # position 标签的位置
17            position="outside",
18            # 回调函数,回调函数格式:
19            # (params: Object|Array) => string
20            # 设置标签的显示样式
21            formatter="{a|{a}}{abg|}\n{hr|}\n {b|{b}: }{c}  {per|{d}%}  ",
22           # 背景颜色
23            background_color="#eee",
24            # 边框颜色
25            border_color="#aaa",
26            # 边框宽度
27            border_width=1,
28            # 边框四角弧度
29            border_radius=4,
30            rich={
31                "a": {"color": "#999",
32                      "lineHeight": 22,
33                      "align": "center" #对齐方式
34                      },
35                "abg": {
36                    "backgroundColor": "#e3e3e3",
37                    "width": "100%",
38                    "align": "right",
39                    "height": 22,
40                    "borderRadius": [4, 4, 0, 0],
41                     },
42                "hr": {
43                    "borderColor": "#aaa",
44                    "width": "100%",
45                    "borderWidth": 0.5,
46                    "height": 0,
47                    },
48                "b": {"fontSize": 16,
49                      "lineHeight": 33
50                      },
51                #百分比
52                "per": {
53                    "color": "#eee", #字体颜色
54                    "backgroundColor": "#334455",  #背景颜色
55                    "padding": [2, 4],
56                    "borderRadius": 2,
57                    },
58            },
59        ),
60    )
61    .set_global_opts(title_opts=opts.TitleOpts(title="Pie-富文本示例"))
62    .render("pie_rich_label.html")
63)

代码来自:pyecharts学习笔记——Pie饼图