游乐游手机版
首页/科技数码/文章详情

pygal,一个神奇的 Python 库

时间:2025-12-15 20:27
Pygal 支持各种图表类型,包括折线图、条形图和雷达图。它适合那些想要以最少的配置快速、直接地创建静态图表的用户。 Pygal是一个开源的Python库,用于使用简单直观的语法创建SVG图表。它注

Pygal 支持各种图表类型,包括折线图、条形图和雷达图。它适合那些想要以最少的配置快速、直接地创建静态图表的用户。

Pygal是一个开源的Python库,用于使用简单直观的语法创建SVG图表。它注重易用性,旨在用最少的代码生成具有视觉吸引力的图表。

Pygal支持各种图表类型,包括折线图、条形图和雷达图。它适合那些想要以最少的配置快速、直接地创建静态图表的用户。

一、核心功能

SVG支持:生成的图表为矢量格式,可无损缩放,适合网页嵌入或高质量打印。丰富的图表类型:支持柱状图、折线图、饼图、散点图、雷达图、仪表盘图、树状图、金字塔图等 14 种以上图表类型。交互性:默认支持鼠标悬停显示数据标签、点击事件等,无需额外代码。个性化定制:可调整颜色、字体、轴标签、柱状图圆角、填充效果等。例如,通过Style类自定义配色

二、安装及基本用法

1. 库安装

通过pip进行安装:

pip install pygal

2. 柱状图

此示例中,我们将创建一个显示公司季度销售额的柱状图

import pygalbar = pygal.Bar()bar.title = "销售额统计"bar.x_labels = ['一季度', '二季度', '三季度', '四季度']bar.add('2024年', [100, 200, 300, 400])bar.render_to_file('sales.svg') # 保存为 SVG 文件

3. 饼图

在此示例中,我们首先定义两个列表citys和users,分别包含城市名称及其总人数百分比。 我们创建一个饼图并将图表的标题设置为 "关注人数"。

import pygal# Datacitys = ['北京', '上海', '广州', '长沙', '重庆']users = [30, 25, 20, 15, 10]pie_chart = pygal.Pie()pie_chart.title = "关注人数"for i in range(len(citys)): pie_chart.add(citys[i], users[i]) # Render the chartpie_chart.render_to_file('follow.svg')

4. 仪表盘图(SolidGauge)

gauge = pygal.SolidGauge(half_pie=False, inner_radius=0.7)gauge.title = "任务完成度"gauge.add('进度', 80)gauge.render_to_file('proccess.svg')

参数:

half_pie 是否为半圆inner_raidus 内部半径

5. 雷达图(Radar)

适用于多维数据对比,如学科能力分析:

radar = pygal.Radar(fill=True)radar.x_labels = ['语文', '数学', '英语', '物理', '化学']radar.add('学生A', [90, 85, 95, 80, 75])radar.add('学生B', [85, 90, 95, 85, 75])radar.render_to_file('radar.svg')

三、高级功能

1. 默认悬停与点击交互示例

Pygal生成的SVG图表默认支持 悬停显示数值,无需额外代码。点击事件需结合前端JavaScript实现,但悬停效果开箱即用:

import pygal# 创建柱状图bar = pygal.Bar()bar.title = "产品销量(悬停查看数值)"bar.x_labels = ['苹果', '香蕉', '橘子', '葡萄']bar.add('2024年', [120, 90, 150, 80])bar.render_to_file('hover_demo.svg') # 保存为 SVG# 打开文件查看效果(鼠标悬停在柱子上即可显示数值)import webbrowserwebbrowser.open('hover_demo.svg')

鼠标悬停在柱状图上方时,自动显示对应数值标签(如 120、90 等)

2. 自定义颜色样式(使用 Style 类)

通过pygal.style.Style自定义图表颜色、字体等样式:

from pygal import Barfrom pygal.style import Style# 自定义样式:深色背景 + 渐变柱状图custom_style = Style( background='#2d2d2d', # 背景色 plot_background='#2d2d2d', # 绘图区背景 foreground='#dddddd', # 标签文字颜色 foreground_strnotallow='#ffffff', # 强调文字颜色(如标题) colors=('#ff4444', '#44ff44', '#4444ff'), # 数据序列颜色 opacity=0.8, # 透明度 opacity_hover=1.0, # 悬停时透明度 transitinotallow='400ms ease-out'# 动画过渡效果)# 应用自定义样式bar = Bar(style=custom_style)bar.title = "自定义颜色样式示例"bar.x_labels = ['红色', '绿色', '蓝色']bar.add('系列1', [30, 50, 20])bar.add('系列2', [20, 40, 60])bar.render_to_file('custom_style.svg')

效果:

图表背景为深灰色 (#2d2d2d),文字为浅灰色。数据系列颜色依次为红、绿、蓝,悬停时透明度增强。保存后打开 SVG 文件查看完整效果。

3. 动态修改单个数据点颜色

若需为特定数据点单独着色,可传递颜色数组:

bar = pygal.Bar()bar.add('销量', [ {'value': 120, 'color': '#FF0000'}, # 红色 {'value': 90, 'color': '#00FF00'}, # 绿色 {'value': 150, 'color': '#0000FF'}, # 蓝色 {'value': 80, 'color': '#FFD700'} # 金色])bar.render_to_file('custom_color_points.svg')

四、应用场景

数据分析:趋势分析(折线图)、分布对比(柱状图)。教育领域:学生成绩雷达图、学科能力分布。商业报告:销售额堆叠柱状图、市场份额饼图。科研可视化:实验数据散点图、多维数据雷达图。实时仪表盘:结合Flask/Django嵌入网页,动态更新数据。
来源:https://www.51cto.com/article/817641.html
上一篇微信鸿蒙版更新上线,新增多项实用功能 下一篇国内AI公司研发新一代模型,挑战国际前沿技术
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
年国家能源局充换电服务业用电量增速48.8%
科技数码 · 2026-06-29

年国家能源局充换电服务业用电量增速48.8%

2025年全社会用电量达103682亿千瓦时,同比增长5 0%。充换电服务业用电增速高达48 8%,信息传输与软件服务业增速17 0%。第三产业和居民用电对增长贡献率合计占一半。中国成为全球首个年度用电量超10 4万亿千瓦时的国家。

追风者 GLACIER ONE 360 S25 液冷散热器新品上市 联体风扇售价429元
科技数码 · 2026-06-29

追风者 GLACIER ONE 360 S25 液冷散热器新品上市 联体风扇售价429元

追风者冰川360S25液冷散热器售价429元,三联一体风扇便捷安装,冷头小体积纯铜底座噪音18dB,风扇转速300-2000RPM、风量75CFM、静压2 96mmAq,五年质保漏液包赔。

三星Galaxy Watch8用户反馈谷歌后台组件异常
科技数码 · 2026-06-29

三星Galaxy Watch8用户反馈谷歌后台组件异常

三星GalaxyWatch8、Watch5Pro、Watch6及Watch7用户反映,GooglePlayServices后台耗电异常,电量占比最高达99 97%,远超正常水平,严重影响续航。目前故障原因不明,谷歌尚未发布官方声明。

罗永浩批苹果iOS 27创新不足 盼新CEO改进
科技数码 · 2026-06-29

罗永浩批苹果iOS 27创新不足 盼新CEO改进

罗永浩批评苹果iOS27创新不足,称仅有双iPhone同号、音量分离等数十项细节改进,认为库克时代缺乏突破性创新,股市虽好但消费者只能被迫接受挤牙膏式升级。

年国产车出口710万辆,两家车企销量破百万
科技数码 · 2026-06-29

年国产车出口710万辆,两家车企销量破百万

2025年国产汽车出口总量达710万辆,同比增长21%。奇瑞以134万辆居首,比亚迪105万辆次之,上汽乘用车出口占比60%最高,长城出口51万辆。吉利、长安等主流品牌同步增长,小鹏、零跑等新兴品牌海外拓展加速。