Py学习  »  Python

从零开始学Python:一篇文章讲清所有入门知识

A逍遥之路 • 5 月前 • 129 次点击  

你是不是也曾为复杂的数据可视化代码头疼不已?是不是觉得做一个好看的图表特别麻烦?今天就给大家介绍一个超级简单又好用的Python可视化库——pygal,五分钟就能做出高颜值图表,让你的数据分析瞬间高大上!

一、pygal是个啥?

简单来说,pygal是Python中一个小众但超级好用的数据可视化库。和大名鼎鼎的matplotlib、seaborn相比,它有这些独特优势:

  1. 上手超简单:几行代码就能画出漂亮图表

  2. 颜值超高:默认配色和风格就很美观

  3. 交互性强:生成的SVG图表可以放大缩小不失真

  4. 定制灵活:能轻松调整样式、颜色和主题

最关键的是——不需要写一大堆复杂配置代码,就能做出专业感十足的图表!

二、先装起来再说

安装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', [15304560])
line_chart.add('产品B', [30352389])

# 保存图表
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年', [6500062000250004500035000])

# 自定义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_styleshow_legend=True)
line_chart.title='月度用户增长趋势'
line_chart.x_labels= ['1月''2月''3月''4月' '5月''6月']

# 添加多条数据线
line_chart.add('应用A', [100015002300370045007000])
line_chart.add('应用B', [80011001700250033004000])

line_chart.render_to_file('用户增长趋势.svg')

这个图表使用了自定义的配色方案,看起来更加专业和美观。

3. 结合真实数据:股票走势图

来个实战案例,用pygal分析某公司股票价格走势:

import pygal
from pygal.style import DarkStyle

# 使用内置的暗色风格
stock=pygal.Line(style=DarkStylex_label_rotation=45)
stock.title='某科技公司股价走势(2023)'
stock.x_labels= ['1月''2月''3月''4月''5月''6月'
                '7月''8月''9月' '10月''11月''12月']

# 添加股价数据
stock.add('股价', [154148160167180193205198187210230215])

# 添加交易量数据(使用辅助y轴)
stock.add('交易量(万手)', [151218213035422519334830], 
         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('销售额(万元)', [256312384420])
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=lambdaxf"{x:.1f}°C"

line.add('北京', [2.05.711.318.624.927.8])
line.add('上海', [6.5 8.212.718.323.526.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=lambdaxf'{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不仅仅支持基础图表,还有很多特色图表类型:

  • 基础图表:条形图(Bar)、折线图(Line)、饼图(Pie)、雷达图(Radar)

  • 特色图表:箱线图(Box)、漏斗图(Funnel)、点图(Dot)、仪表盘(Gauge)

  • 地图图表:世界地图(World)、国家地图等

来看个雷达图例子:

import pygal

# 创建雷达图
radar=pygal.Radar()
radar.title='编程语言技能评估'
radar.x_labels= ['语法简洁度''开发效率''执行速度'
                '学习难度''社区活跃度''就业前景']

# 添加不同语言的评分
radar.add('Python', [997910 9])
radar.add('Java', [7786910])
radar.add('C++', [6610588])

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=styleshow_dots=Falsefill=True
                interpolate='cubic')
line.title='2023年月度销售额趋势'
line.x_labels= ['1月''2月''3月''4月''5月''6月'
                '7月''8月''9月''10月''11月''12月']
line.add('销售额(万元)'
       [320285334390421458470515549587 645682])
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初学者快速上手数据可视化。

几点使用建议:

  1. 优先选择pygal的场景:

  • 需要快速制作漂亮图表

  • 图表需要交互功能

  • 不需要特别复杂的自定义

  • 可能不适合的场景:

    • 需要非常复杂的科学计算图表

    • 有特殊的定制化需求

    • 数据量特别大的情况

    学会了pygal,你就掌握了一个数据可视化的利器,无论是做数据分析报告、毕业论文图表,还是给老板汇报工作成果,都能轻松应对!

    最后,希望这篇教程对你有所帮助。动手试试吧,你会发现数据可视化原来可以这么简单!

    转发、收藏、在看,是对作者最大的鼓励!👏
    关注逍遥不迷路,Python知识日日补!






               对Python,AI,自动化办公提效,副业发展等感兴趣的伙伴们,扫码添加逍遥,限免交流群

    备注【成长交流】

    图片




    Python社区是高质量的Python/Django开发社区
    本文地址:http://www.python88.com/topic/181570