You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pygal绘制堆叠柱状图?解决折线图代码的NameError错误

Pygal 相关问题解答

问题2:折线图代码报错「NameError: name 'x' is not defined」的修复

错误原因

代码中直接调用x.append()和y.append(),但变量x和y从未初始化(未创建空列表),Python无法识别这两个变量,因此抛出NameError。同时原代码逻辑未适配3条折线的需求,csv读取方式也不够高效。

解决方案

结合你的数据结构(年份+3个类别),以下是两种可行的修复方案:

方案1:使用pandas读取数据(推荐)

import pygal as pg
import pandas as pd

# 读取csv数据
df = pd.read_csv('data.csv')
# 初始化折线图对象,设置X轴标签旋转避免重叠
line_chart = pg.Line(x_label_rotation=45)
# 设置图表标题与X轴标签
line_chart.title = '各类别年度数据变化'
line_chart.x_labels = df['Year'].astype(str)

# 添加三条折线,分别对应三个类别
line_chart.add('类别1', df['Category1'])
line_chart.add('类别2', df['Category2'])
line_chart.add('类别3', df['Category3'])

# 生成SVG格式图表文件
line_chart.render_to_file('three_lines.svg')

方案2:使用csv模块读取数据

import pygal as pg
import csv

filename = 'data.csv'
# 先初始化空列表存储各列数据
years = []
cat1 = []
cat2 = []
cat3 = []

with open(filename, 'r') as f:
    # 用DictReader读取,直接通过表头名获取数据
    reader = csv.DictReader(f)
    for row in reader:
        years.append(row['Year'])
        cat1.append(int(row['Category1']))
        cat2.append(int(row['Category2']))
        cat3.append(int(row['Category3']))

line_chart = pg.Line(x_label_rotation=45)
line_chart.title = '各类别年度数据变化'
line_chart.x_labels = years

# 添加三条折线数据
line_chart.add('类别1', cat1)
line_chart.add('类别2', cat2)
line_chart.add('类别3', cat3)

line_chart.render_to_file('three_lines.svg')

问题1:使用Pygal绘制堆叠柱状图

Pygal的Bar()类支持堆叠模式,只需初始化时传入stack=True参数,再依次添加各系列数据即可自动堆叠。

示例代码

import pygal as pg
import pandas as pd

df = pd.read_csv('data.csv')
# 创建堆叠柱状图对象,开启堆叠模式
stacked_bar = pg.Bar(stack=True, x_label_rotation=45)
stacked_bar.title = '各类别年度数据堆叠柱状图'
stacked_bar.x_labels = df['Year'].astype(str)

# 添加各类别数据,Pygal会自动完成堆叠
stacked_bar.add('类别1', df['Category1'])
stacked_bar.add('类别2', df['Category2'])
stacked_bar.add('类别3', df['Category3'])

stacked_bar.render_to_file('stacked_bar.svg')

关键说明

  • 核心参数是stack=True,开启后同X轴的数据会自动堆叠
  • x_label_rotation用于旋转X轴年份标签,避免文字重叠

内容的提问来源于stack exchange,提问作者unleasehed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 14:28:30