python报错cannot import name 'Pie' from 'pyecharts'
之前使用过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饼图
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/cannot-import-pie/6595.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.