之前使用过pycharts进行汇图,最近更新本地的pyecharts库,使用之前的代码时,发现之前的方法不好使了,报错:cannot import name 'Pie' from 'pyecharts' 。找了下<a href="https://pyecharts.org/" target="_blank" rel="noopener noreferrer">官方文档</a>看了下,发现其现在有两个版本,v0.5.X和v1两个大版本,v0.5.X和v1间不兼容,v1是一个全新的版本。由于默认安装的是最新版本,之前的方法换了地方。比如之前常用的pie图、bar图等,现在需要使用如下方法引用:
<br />
from pyecharts.charts import Bar, Grid, Pie, Map, WordCloud
当然如果觉得不习惯或者不想修改,也可以使用老版本的,把pyecharts卸载后,安装老的版本:
<br />
pip install pyecharts==0.5.11 # 豆瓣源 pip install -i https://pypi.doubanio.com/simple/ pyecharts==0.5.11
这里以pie饼图为例,给下老版本和新版本的用法。
一、老版本使用
pie.add()方法使用的语法为:
<br />
add(name, attr, value, radius=None, center=None, rosetype=None, **kwargs)
各参数的意义是:
name -> str 图例名称<br />
attr -> list 属性名称
value -> list 属性所对应的值
radius -> list 饼图的半径,数组的第一项是内半径,第二项是外半径,默认为 [0, 75],默认设置成百分比,相对于容器高宽中较小的一项的一半
center -> list
饼图的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标,默认为 [50, 50]
默认设置成百分比,设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度
rosetype -> str
是否展示成南丁格尔图,通过半径区分数据大小,有’radius’和’area’两种模式。默认为’radius’
radius:扇区圆心角展现数据的百分比,半径展现数据的大小
area:所有扇区圆心角相同,仅通过半径展现数据大小
<br />
<br />
1、基本饼图
<br />
from pyecharts import Pie attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [11, 12, 13, 10, 10, 10] pie = Pie("饼图示例") pie.add( "", attr, v1, is_label_show=True, is_more_utils=True ) pie.render(path="Bing1.html")
2、环形饼图
<br />
from pyecharts import Pie attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [11, 12, 13, 10, 10, 10] pie = Pie("饼图-圆环图示例", title_pos='center') pie.add( "", attr, v1, radius=[40, 75], label_text_color=None, is_label_show=True, is_more_utils=True, legend_orient="vertical", legend_pos="left", ) pie.render(path="Bing2.html")
3、多饼图
<br />
from pyecharts import Pie from pyecharts import Style # 否则会遇到错误NameError: name 'Style' is not defined pie = Pie('各类电影中"好片"所占的比例', "数据来着豆瓣", title_pos='center') style = Style() pie_style = style.add( label_pos="center", is_label_show=True, label_text_color=None ) pie.add( "", ["剧情", ""], [25, 75], center=[10, 30], radius=[18, 24], **pie_style ) pie.add( "", ["奇幻", ""], [24, 76], center=[30, 30], radius=[18, 24], **pie_style ) pie.add( "", ["爱情", ""], [14, 86], center=[50, 30], radius=[18, 24], **pie_style ) pie.add( "", ["惊悚", ""], [11, 89], center=[70, 30], radius=[18, 24], **pie_style ) pie.add( "", ["冒险", ""], [27, 73], center=[90, 30], radius=[18, 24], **pie_style ) pie.add( "", ["动作", ""], [15, 85], center=[10, 70], radius=[18, 24], **pie_style ) pie.add( "", ["喜剧", ""], [54, 46], center=[30, 70], radius=[18, 24], **pie_style ) pie.add( "", ["科幻", ""], [26, 74], center=[50, 70], radius=[18, 24], **pie_style ) pie.add( "", ["悬疑", ""], [25, 75], center=[70, 70], radius=[18, 24], **pie_style ) pie.add( "", ["犯罪", ""], [28, 72], center=[90, 70], radius=[18, 24], legend_top="center", **pie_style ) pie.render(path="Bing4.html")
以上内容主要来自:<a href="https://blog.csdn.net/m0_37360684/article/details/85164001" target="_blank" rel="noopener noreferrer">python中pyecharts绘制饼图</a>
二、新版本使用
1、基本示例
<br />
from pyecharts import options as opts from pyecharts.charts import Pie from pyecharts.faker import Faker from pyecharts.globals import ThemeType c = ( #设置主题 Pie(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) .add( # 系列名称 "", # 系列数据项 格式为 [(key1, value1), (key2, value2)] [list(z) for z in zip(Faker.choose(), Faker.values())], # 系列 label 颜色 Optional[str] color = None, # 饼图的半径,数组的第一项是内半径,第二项是外半径 # 默认设置成百分比,相对于容器高宽中较小的一项的一半 # Optional[Sequence] radius = None, # 饼图的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标 # 默认设置成百分比,设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度 # Optional[Sequence] center = None, # 是否展示成南丁格尔图,通过半径区分数据大小,有'radius'和'area'两种模式。 # radius:扇区圆心角展现数据的百分比,半径展现数据的大小 # area:所有扇区圆心角相同,仅通过半径展现数据大小 # Optional[str] rosetype = None, # 饼图的扇区是否是顺时针排布。 is_clockwise = True, # 标签配置项,参考 `series_options.LabelOpts` label_opts = opts.LabelOpts(), # 提示框组件配置项,参考 `series_options.TooltipOpts` tooltip_opts = None, # 图元样式配置项,参考 `series_options.ItemStyleOpts` itemstyle_opts = None, # 可以定义 data 的哪个维度被编码成什么。 # types.Union[types.JSFunc, dict, None] encode = None, ) # 全局配置项 # 设置标题 .set_global_opts(title_opts=opts.TitleOpts(title="Pie-基本示例")) # 系统配置项 # 设置标签 .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")) .render("pie_base.html") )
2、环装图
<br />
from pyecharts import options as opts from pyecharts.charts import Pie from pyecharts.globals import ThemeType from pyecharts.faker import Faker c = ( Pie(init_opts=opts.InitOpts(theme=ThemeType.MACARONS)) .add( "", [list(z) for z in zip(Faker.choose(), Faker.values())], # 饼图的半径,数组的第一项是内半径,第二项是外半径 # 默认设置成百分比,相对于容器高宽中较小的一项的一半 radius=["40%", "75%"], ) .set_global_opts( title_opts=opts.TitleOpts(title="Pie-Radius"), legend_opts=opts.LegendOpts( orient="vertical", #图例垂直放置 pos_top="15%",# 图例位置调整 pos_left="2%"), ) .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")) .render("pie_radius.html") )
3、富文本
<br />
from pyecharts import options as opts from pyecharts.charts import Pie from pyecharts.faker import Faker from pyecharts.globals import ThemeType c = ( Pie(init_opts=opts.InitOpts(theme=ThemeType.MACARONS)) .add( "", # 系列名称 # 系列数据项,格式为 [(key1, value1), (key2, value2)] [list(z) for z in zip(Faker.choose(), Faker.values())], # 饼图的半径,数组的第一项是内半径,第二项是外半径 # 默认设置成百分比,相对于容器高宽中较小的一项的一半 radius=["40%", "55%"], #标签配置项 label_opts=opts.LabelOpts( # position 标签的位置 position="outside", # 回调函数,回调函数格式: # (params: Object|Array) => string # 设置标签的显示样式 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(title_opts=opts.TitleOpts(title="Pie-富文本示例")) .render("pie_rich_label.html") )
代码来自:<a href="https://blog.csdn.net/qq_42374697/article/details/105875185" target="_blank" rel="noopener noreferrer">[pyecharts学习笔记]——Pie饼图</a>