pygal,一个神奇的 Python 库
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嵌入网页,动态更新数据。热门专题
热门推荐
在数字时代,聆听音乐的全新窗口 在当下的数字生活中,音乐已经成为不可或缺的精神食粮。对于广大音乐爱好者来说,一个优质、稳定的在线音乐平台,是实现随时放松与享受的关键。汽水音乐网页版的推出,正是这样一个值得关注的音乐平台入口。它通过网页端的便捷访问,为用户提供了一种流畅、舒适且高效的全新听歌体验,让好
OPPO Find N6折叠屏旗舰与OPPO Watch X3智能手表震撼发布,汇顶科技核心技术赋能 3月17日,OPPO正式发布年度重磅新品——OPPO Find N6大折叠屏旗舰手机与新一代安卓旗舰智能手表OPPO Watch X3。作为其长期深度技术合作伙伴,汇顶科技以多项前沿创新方案,全面加
《重返未来:1999》3 5版本「绿松石蛇俱乐部」更新解析:新角色、心相与福利一览 各位玩家久等了!《重返未来:1999》备受瞩目的3 5版本「绿松石蛇俱乐部」现已正式揭晓更新计划。本次版本更新维护将于3月5日上午6:00正式启动,预计持续至10:00。根据以往游戏维护的经验,实际开服时间可能根据情
比特币的价格被定义为多少美元 想用一个固定的美元数字来定义比特币的价格?这恰恰误解了它的本质。比特币的价格,从来不是一个由某个中心化机构或公式敲定的“标价”,而是一个由全球无数参与者通过实时交易、持续博弈形成的动态共识。它不像传统货币,由政府权威背书并规定面值。它的价值根基,源于那被广泛认可的、程序
中旅旅行APP昵称修改步骤详解 想为你的中旅旅行APP账户设置一个更具个性的ID名称吗?修改昵称的流程实际上非常简单便捷,全程仅需一分钟左右即可完成。接下来,我们将通过三个清晰的操作步骤,手把手教你如何快速更换中旅旅行账号的昵称,轻松打造专属的旅行名片。 第一步:打开应用并进入个人主页 首先,请确保





