您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何利用Python pyecharts绘制饼图
## 一、pyecharts简介
pyecharts是基于Echarts的Python可视化库,能够生成高度交互式的图表。相较于Matplotlib等传统库,pyecharts具有以下优势:
1. **丰富的图表类型**:支持30+种图表类型
2. **交互性强**:支持缩放、拖拽、数据筛选等操作
3. **美观的默认样式**:无需复杂配置即可生成专业级图表
4. **Web友好**:可轻松集成到Flask/Django等Web框架
## 二、环境准备
### 安装pyecharts
```bash
pip install pyecharts
import pyecharts
print(pyecharts.__version__) # 需要1.9.0及以上版本
from pyecharts.charts import Pie
data = [("苹果", 45), ("香蕉", 30), ("橙子", 25)]
pie = Pie()
pie.add("", data)
pie.render("basic_pie.html")
add()
方法参数:
series_name
: 系列名称data_pair
: 数据项(名称,值)列表radius
: 饼图半径(可制作环形图)rosetype
: 是否显示为南丁格尔图pie = Pie()
pie.add(
series_name="水果销量",
data_pair=data,
label_opts=opts.LabelOpts(
formatter="{b}: {c} ({d}%)", # b:名称 c:值 d:百分比
color="#333"
),
itemstyle_opts=opts.ItemStyleOpts(
border_width=1,
border_color="#fff"
)
)
pie.add(
series_name="",
data_pair=data,
radius=["40%", "75%"] # 内半径40%,外半径75%
)
pie.add(
series_name="",
data_pair=data,
radius=["30%", "120%"],
rosetype="area" # 可选'radius'或'area'
)
inner_data = [("苹果", 45), ("香蕉", 30), ("橙子", 25)]
outer_data = [("北方", 60), ("南方", 40)]
pie = Pie()
pie.add(
"地区",
outer_data,
radius=["50%", "70%"],
label_opts=opts.LabelOpts(is_show=False)
).add(
"水果",
inner_data,
radius=["0%", "45%"],
label_opts=opts.LabelOpts(position="inner")
)
from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.faker import Faker
pie = Pie()
pie.add("", [list(z) for z in zip(Faker.choose(), Faker.values())])
pie.set_global_opts(
title_opts=opts.TitleOpts(title="动态数据示例"),
legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%")
)
pie.render("dynamic_pie.html")
from pyecharts.commons.utils import JsCode
pie = Pie()
pie.add(
series_name="",
data_pair=data,
label_opts=opts.LabelOpts(
formatter=JsCode(
"function(params){return params.name+':'+params.value+'('+params.percent+'%)';}"
)
)
)
pie.set_series_opts(
emphasis_opts=opts.EmphasisOpts(
itemstyle_opts=opts.ItemStyleOpts(
shadow_blur=10,
shadow_offset_x=0,
shadow_color="rgba(0, 0, 0, 0.5)"
)
)
)
sales_data = [
("手机", 1560),
("电脑", 980),
("家电", 760),
("服饰", 450),
("食品", 320)
]
pie = Pie(init_opts=opts.InitOpts(width="800px", height="600px"))
pie.add(
"",
sales_data,
radius=["35%", "60%"],
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,
},
},
),
)
pie.set_global_opts(title_opts=opts.TitleOpts(title="电商销售占比分析"))
pie.render("ecommerce_sales.html")
中文显示问题:
from pyecharts.globals import CurrentConfig
CurrentConfig.ONLINE_HOST = "https://cdn.jsdelivr.net/npm/echarts@latest/dist/"
图表显示不全:
pie = Pie(init_opts=opts.InitOpts(width="1000px", height="800px"))
数据更新延迟:
from pyecharts.charts import Pie
from pyecharts import options as opts
# 数据准备
data = [("产品A", 25), ("产品B", 35), ("产品C", 20), ("产品D", 15), ("其他", 5)]
# 创建饼图
pie = (
Pie(init_opts=opts.InitOpts(theme="light", width="900px", height="500px"))
.add(
series_name="销售占比",
data_pair=data,
radius=["30%", "70%"],
center=["50%", "50%"],
label_opts=opts.LabelOpts(
formatter="{b}: {c} ({d}%)",
font_size=14,
color="#333"
),
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="2023年产品销售占比",
subtitle="数据截止至2023年12月",
pos_left="center"
),
legend_opts=opts.LegendOpts(
orient="vertical",
pos_top="15%",
pos_left="2%"
),
tooltip_opts=opts.TooltipOpts(
trigger="item",
formatter="{a} <br/>{b}: {c} ({d}%)"
)
)
.set_series_opts(
emphasis_opts=opts.EmphasisOpts(
itemstyle_opts=opts.ItemStyleOpts(
shadow_blur=10,
shadow_offset_x=0,
shadow_color="rgba(0, 0, 0, 0.5)"
)
)
)
)
# 生成HTML文件
pie.render("final_pie_chart.html")
通过以上内容,您应该已经掌握了使用pyecharts绘制各种饼图的技巧。实际应用中可根据需求灵活组合这些功能,创建出更专业的数据可视化作品。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。