你是不是也曾为复杂的数据可视化代码头疼不已?是不是觉得做一个好看的图表特别麻烦?今天就给大家介绍一个超级简单又好用的Python可视化库——pygal,五分钟就能做出高颜值图表,让你的数据分析瞬间高大上!
一、pygal是个啥?
简单来说,pygal是Python中一个小众但超级好用的数据可视化库。和大名鼎鼎的matplotlib、seaborn相比,它有这些独特优势:
上手超简单:几行代码就能画出漂亮图表
颜值超高:默认配色和风格就很美观
交互性强:生成的SVG图表可以放大缩小不失真
定制灵活:能轻松调整样式、颜色和主题
最关键的是——不需要写一大堆复杂配置代码,就能做出专业感十足的图表!
二、先装起来再说
安装pygal超简单,一行命令搞定:
pip install pygal
有时可能需要额外安装lxml库来支持某些功能:
pip installl xml
三、五分钟上手pygal
1. 先来个最简单的柱状图
import pygal
# 创建柱状图对象
bar_chart=pygal.Bar()
# 设置图表标题
bar_chart.title='编程语言流行度排行'
# 添加数据
bar_chart.add('Python', 19)
bar_chart.add('Java', 15)
bar_chart.add('JavaScript', 14)
bar_chart.add('C++', 12)
bar_chart.add('PHP', 8)
# 保存为SVG文件
bar_chart.render_to_file('语言流行度.svg')
# 如果你想直接在notebook中查看
# bar_chart.render_in_browser()
就这么几行代码,就能得到一个专业感十足的柱状图!是不是特别简单?
2. 整个折线图也不在话下
import pygal
# 创建折线图
line_chart=pygal.Line()
line_chart.title
='2023年各季度销售额'
line_chart.x_labels= ['第一季度', '第二季度', '第三季度', '第四季度']
# 添加两条折线
line_chart.add('产品A', [15, 30, 45, 60])
line_chart.add('产品B', [30, 35, 23, 89])
# 保存图表
line_chart.render_to_file('季度销售额.svg')
这个折线图展示了两种产品四个季度的销售情况对比,非常直观!
3. 来个炫酷的饼图
import pygal
# 创建饼图
pie_chart=pygal.Pie()
pie_chart.title='最喜欢的编程语言调查'
# 添加数据
pie_chart.add('Python', 45)
pie_chart.add('Java', 20)
pie_chart.add('JavaScript', 15)
pie_chart.add(
'C++', 10)
pie_chart.add('其他', 10)
# 保存图表
pie_chart.render_to_file('编程语言喜好.svg')
就这么简单,一个漂亮的饼图就出来了,展示不同编程语言的受欢迎程度。
四、进阶操作:让图表更专业
1. 添加图例和标签
import pygal
bar_chart=pygal.Bar()
bar_chart.title='各城市平均房价(元/平方米)'
bar_chart.x_labels= ['北京', '上海', '广州', '深圳', '杭州']
# 在添加数据时可以指定图例名称
bar_chart.add('2023年', [65000, 62000, 25000, 45000, 35000])
# 自定义x轴和y轴标签
bar_chart.x_title='城市'
bar_chart.y_title='均价(元/平方米)'
bar_chart.render_to_file('城市房价.svg')
2. 自定义样式,让图表更好看
import pygal
from pygal.style import LightColorizedStyle
# 创建自定义样式
custom_style=LightColorizedStyle(
background='white',
plot_background='rgba(255, 255, 255, 0.9)',
foreground='#333333',
foreground_strong='#000000',
foreground_subtle='#7a7a7a',
opacity='.6',
opacity_hover='.9',
transition='400ms ease-in',
colors=('#3498db', '#e74c3c', '#2ecc71', '#f39c12', '#9b59b6')
)
# 应用自定义样式
line_chart=pygal.Line(style=custom_style, show_legend=True)
line_chart.title='月度用户增长趋势'
line_chart.x_labels= ['1月', '2月', '3月', '4月'
, '5月', '6月']
# 添加多条数据线
line_chart.add('应用A', [1000, 1500, 2300, 3700, 4500, 7000])
line_chart.add('应用B', [800, 1100, 1700, 2500, 3300, 4000])
line_chart.render_to_file('用户增长趋势.svg')
这个图表使用了自定义的配色方案,看起来更加专业和美观。
3. 结合真实数据:股票走势图
来个实战案例,用pygal分析某公司股票价格走势:
import pygal
from pygal.style import DarkStyle
# 使用内置的暗色风格
stock=pygal.Line(style=DarkStyle, x_label_rotation=45)
stock.title='某科技公司股价走势(2023)'
stock.x_labels= ['1月', '2月', '3月', '4月', '5月', '6月',
'7月', '8月', '9月',
'10月', '11月', '12月']
# 添加股价数据
stock.add('股价', [154, 148, 160, 167, 180, 193, 205, 198, 187, 210, 230, 215])
# 添加交易量数据(使用辅助y轴)
stock.add('交易量(万手)', [15, 12, 18, 21, 30, 35, 42, 25, 19, 33, 48, 30],
secondary=True)
stock.render_to_file('股价走势.svg')
这个例子展示了股价和交易量的双Y轴图表,让数据分析更加专业!
五、实用技巧:让你的图表锦上添花
1. 添加数据标签
import pygal
bar_chart=pygal.Bar()
bar_chart.title='2023年季度销售额'
bar_chart.x_labels= ['第一季度', '第二季度',
'第三季度', '第四季度']
# 设置为True显示数据标签
bar_chart.show_values=True
bar_chart.add('销售额(万元)', [256, 312, 384, 420])
bar_chart.render_to_file('季度销售额标签.svg')
2. 添加点击时的工具提示
import pygal
line=pygal.Line()
line.title='温度变化曲线'
line.x_labels= ['1月', '2月', '3月', '4月', '5月', '6月']
# 自定义工具提示格式
line.value_formatter=lambdax: f"{x:.1f}°C"
line.add('北京', [2.0, 5.7, 11.3, 18.6, 24.9, 27.8])
line.add('上海', [6.5,
8.2, 12.7, 18.3, 23.5, 26.9])
line.render_to_file('温度变化.svg')
现在当你把鼠标悬停在数据点上时,会显示格式化的温度值。
3. 酷炫的仪表盘图表
import pygal
gauge=pygal.SolidGauge(
half_pie=True,
inner_radius=0.70,
show_legend=False
)
gauge.title='关键业务指标完成情况'
# 定义百分比区间
percent_formatter=lambdax: f'{x:.1f}%'
# 添加不同指标及其完成情况
gauge.add('销售目标', [{'value': 87.4, 'max_value': 100}],
formatter=percent_formatter)
gauge.add('客户满意度', [{'value': 93.7, 'max_value': 100}],
formatter=percent_formatter
)
gauge.add('员工绩效', [{'value': 82.3, 'max_value': 100}],
formatter=percent_formatter)
gauge.render_to_file('业务指标仪表盘.svg')
这个半圆形仪表盘图表非常适合展示目标完成情况,一目了然!
六、pygal支持的图表类型超全
pygal不仅仅支持基础图表,还有很多特色图表类型:
来看个雷达图例子:
import pygal
# 创建雷达图
radar=pygal.Radar()
radar.title='编程语言技能评估'
radar.x_labels= ['语法简洁度', '开发效率', '执行速度',
'学习难度', '社区活跃度', '就业前景']
# 添加不同语言的评分
radar.add('Python', [9, 9, 7, 9, 10
, 9])
radar.add('Java', [7, 7, 8, 6, 9, 10])
radar.add('C++', [6, 6, 10, 5, 8, 8])
radar.render_to_file('语言能力雷达图.svg')
七、实用案例:数据分析报告
让我们用一个综合案例,展示如何用pygal做一个简单的数据分析报告。
假设我们要分析一家电商平台的销售数据:
import pygal
from pygal.style import LightStyle
# 设置风格
style=LightStyle(
font_family='微软雅黑',
background='white',
plot_background='rgba(240, 240, 240, 0.9)',
colors=('#3498db', '#e74c3c', '#2ecc71', '#f39c12', '#9b59b6')
)
# 1. 不同产品类别销售占比
pie=pygal.Pie(style
=style)
pie.title='2023年产品类别销售占比'
pie.add('电子产品', 42.8)
pie.add('服装鞋包', 23.7)
pie.add('家居用品', 15.2)
pie.add('食品饮料', 12.3)
pie.add('其他', 6.0)
pie.render_to_file('销售类别占比.svg')
# 2. 月度销售趋势
line=pygal.Line(style=style, show_dots=False, fill=True,
interpolate='cubic')
line.title='2023年月度销售额趋势'
line.x_labels= ['1月', '2月', '3月', '4月', '5月', '6月',
'7月', '8月', '9月', '10月', '11月', '12月']
line.add('销售额(万元)',
[320, 285, 334, 390, 421, 458, 470, 515, 549, 587,
645, 682])
line.render_to_file('月度销售趋势.svg')
# 3. 各平台订单来源
bar=pygal.HorizontalBar(style=style)
bar.title='不同平台订单量占比'
bar.add('手机APP', 45.7)
bar.add('电脑网页', 27.8)
bar.add('微信小程序', 18.3)
bar.add('实体门店', 8.2)
bar.render_to_file('订单来源占比.svg')
这三个图表组合起来,就是一个简单而专业的销售数据分析报告!你可以把它们嵌入到你的工作汇报中,瞬间提升专业感。
通过以上的介绍和实例,相信大家已经对pygal有了初步了解。它真的是一个非常友好的可视化工具,尤其适合Python初学者快速上手数据可视化。
几点使用建议:
优先选择pygal的场景:
需要快速制作漂亮图表
图表需要交互功能
不需要特别复杂的自定义
可能不适合的场景:
需要非常复杂的科学计算图表
有特殊的定制化需求
数据量特别大的情况
学会了pygal,你就掌握了一个数据可视化的利器,无论是做数据分析报告、毕业论文图表,还是给老板汇报工作成果,都能轻松应对!
最后,希望这篇教程对你有所帮助。动手试试吧,你会发现数据可视化原来可以这么简单!
对Python,AI,自动化办公提效,副业发展等感兴趣的伙伴们,扫码添加逍遥,限免交流群
备注【成长交流】