基于python绘制数据表(上)

发布于:2024-12-18 ⋅ 阅读:(9) ⋅ 点赞:(0)

利用python绘制各种数据图表

绘制柱形图-源码

from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference

# 创建工作薄
wb = Workbook(write_only=True)
# 创建工作表
ws = wb.create_sheet('月收入')

# 准备数据
rows = [
    ('月份', '销售额'),
    (1, 23),
    (2, 43),
    (3, 56),
    (4, 23),
    (5, 65),
    (6, 54),
    (7, 43),
    (8, 25),
    (9, 53),
    (10, 76),
    (11, 54),
    (12, 54),
]

# 将数据写入到工作表中
for row in rows:
    ws.append(row)

# 创建柱形图对象
chart1 = BarChart()

# 设置柱形图类型 type = col 表示垂直柱形图,type = bar 表示水平柱形图
chart1.type = "col"

# 设置图表标题
chart1.title = "月销售额柱形图"

# 设置图表轴标签
chart1.x_axis.title = '月份'
chart1.y_axis.title = '销售额'

# 设置数据范围
data = Reference(ws, min_col=2, min_row=2, max_row=13, max_col=2)
categories = Reference(ws, min_col=1, min_row=2, max_row=13)

# 将数据和类别添加到图表中
chart1.add_data(data, titles_from_data=True)
chart1.set_categories(categories)

# 将图表添加到工作表中
ws.add_chart(chart1, "E5")

# 保存工作薄
wb.save("示例文件\月份销售额.xlsx")

绘制柱形图-源码解析

这段代码使用 openpyxl 库来创建一个 Excel 工作簿,并在其中创建一个包含柱形图的工作表。以下是对代码的详细分析:

1. 导入必要的模块

from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
  • Workbook 类用于创建一个新的工作簿。

  • BarChart 类用于创建柱形图。

  • Reference 类用于引用工作表中的数据范围。

2. 创建工作簿和工作表

wb = Workbook(write_only=True)
ws = wb.create_sheet('月收入')
  • Workbook(write_only=True) 创建一个只写模式的工作簿,适用于大数据量的写入操作。

  • create_sheet('月收入') 在工作簿中创建一个名为“月收入”的工作表。

3. 准备数据

rows = [
    ('月份', '销售额'),
    (1, 23),
    (2, 43),
    (3, 56),
    (4, 23),
    (5, 65),
    (6, 54),
    (7, 43),
    (8, 25),
    (9, 53),
    (10, 76),
    (11, 54),
    (12, 54),
]
  • rows 是一个包含月份和销售额数据的列表。

4. 将数据写入工作表

for row in rows:
    ws.append(row)
  • 使用 ws.append(row) 将每一行数据追加到工作表中。

5. 创建柱形图对象

chart1 = BarChart()
  • BarChart() 创建一个新的柱形图对象。

6. 设置柱形图类型

chart1.type = "col"
  • type = "col" 表示创建垂直柱形图。

7. 设置图表标题和轴标签

chart1.title = "月销售额柱形图"
chart1.x_axis.title = '月份'
chart1.y_axis.title = '销售额'
  • title 设置图表的标题。

  • x_axis.titley_axis.title 分别设置 X 轴和 Y 轴的标签。

8. 设置数据范围

data = Reference(ws, min_col=2, min_row=2, max_row=13, max_col=2)
categories = Reference(ws, min_col=1, min_row=2, max_row=13)
  • data 引用工作表中销售额的数据范围(从第2行第2列到第13行第2列)。

  • categories 引用工作表中月份的数据范围(从第2行第1列到第13行第1列)。

9. 将数据和类别添加到图表中

chart1.add_data(data, titles_from_data=True)
chart1.set_categories(categories)
  • add_data(data, titles_from_data=True) 将数据添加到图表中,并从数据中提取标题。

  • set_categories(categories) 设置图表的类别(即 X 轴的数据)。

10. 将图表添加到工作表中

ws.add_chart(chart1, "E5")
  • add_chart(chart1, "E5") 将图表添加到工作表的指定位置(E5 单元格)。

11. 保存工作簿

wb.save("示例文件\月份销售额.xlsx")
  • save("示例文件\月份销售额.xlsx") 将工作簿保存到指定的文件路径。

总结

这段代码通过 openpyxl 库创建了一个包含柱形图的 Excel 工作簿,并将数据写入工作表中。最后,图表被添加到工作表的指定位置,并保存为一个新的 Excel 文件。

绘制折线图-源码

from random import randint
from datetime import datetime
from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference

# 创建工作薄对象
wb = Workbook()
# 选定工作表
ws = wb.active  # 使用 active 获取活动工作表

# 准备数据
rows = [
    ['时间', '服务人数']
]
for i in range(8, 24):
    # 将时间对象转换为字符串
    time_str = datetime.combine(datetime.today(), datetime.min.time()).replace(hour=i, minute=0).strftime('%H:%M')
    rows.append([time_str, randint(0, 200)])
for data in rows:
    ws.append(data)

# 创建折线图对象
linechart = LineChart()
# 设置折线图属性
linechart.title = '当天客服绩效图'
linechart.x_axis.title = '时间'
linechart.y_axis.title = '服务人数'

# 设置数据集范围
data = Reference(ws, min_row=2, min_col=2, max_row=ws.max_row)
# 添加数据
linechart.add_data(data, titles_from_data=True)

# 设置x轴显示内容
linechart.x_axis.number_format = "HH:MM"
x_titles = Reference(ws, min_col=1, min_row=2, max_row=ws.max_row)
linechart.set_categories(x_titles)  # 修正了方法名

# 设置图表的位置
ws.add_chart(linechart, 'A20')
# 保存位置
wb.save('示例文件/折线图.xlsx')

绘制折线图-源码解析

这段代码的目的是使用Python的openpyxl库来创建一个Excel工作簿,并在其中添加一个折线图,该图表显示了从早上8点到晚上11点每小时的客服服务人数。以下是对代码的详细分析:

导入模块

from random import randint
from datetime import datetime
from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference
  • randint 用于生成随机数,模拟服务人数。

  • datetime 用于生成时间数据。

  • WorkbookLineChart 来自 openpyxl,分别用于创建Excel工作簿和折线图。

  • Reference 也来自 openpyxl,用于指定图表的数据范围。

创建工作簿和工作表

wb = Workbook()
ws = wb.active
  • Workbook() 创建一个新的工作簿。

  • wb.active 获取当前活动的工作表。

准备数据

rows = [['时间', '服务人数']]
for i in range(8, 24):
    time_str = datetime.combine(datetime.today(), datetime.min.time()).replace(hour=i, minute=0).strftime('%H:%M')
    rows.append([time_str, randint(0, 200)])
for data in rows:
    ws.append(data)
  • 初始化一个包含表头的列表rows

  • 使用循环从早上8点到晚上11点生成时间字符串,并为每个小时生成一个0到200之间的随机服务人数。

  • 将每行数据添加到工作表中。

创建折线图对象并设置属性

linechart = LineChart()
linechart.title = '当天客服绩效图'
linechart.x_axis.title = '时间'
linechart.y_axis.title = '服务人数'
  • 创建一个折线图对象。

  • 设置图表的标题和轴标题。

设置数据集范围并添加数据

data = Reference(ws, min_row=2, min_col=2, max_row=ws.max_row)
linechart.add_data(data, titles_from_data=True)
  • 使用Reference指定服务人数的数据范围(从第二行第二列开始到数据结束)。

  • 将数据添加到图表中,并设置titles_from_data=True以使用数据中的第一行作为图例。

设置x轴显示内容

linechart.x_axis.number_format = "HH:MM"
x_titles = Reference(ws, min_col=1, min_row=2, max_row=ws.max_row)
linechart.set_categories(x_titles)
  • 设置x轴的时间格式。

  • 使用Reference指定时间数据范围,并通过set_categories方法将其设置为x轴的类别。

设置图表位置并保存工作簿

ws.add_chart(linechart, 'A20')
wb.save('示例文件/折线图.xlsx')
  • 将图表添加到工作表的指定位置(A20单元格)。

  • 保存工作簿到文件。

注意事项

  • 确保保存文件的路径('示例文件/折线图.xlsx')是正确的,并且Python脚本有权限写入该路径。

  • 如果openpyxl库未安装,需要先通过pip install openpyxl命令安装。

这段代码是一个很好的示例,展示了如何使用Python自动化Excel图表创建过程,适用于数据分析和报告生成。

绘制面积图-源码

from openpyxl import Workbook
from openpyxl.chart import AreaChart, Reference

# 创建工作薄
wb = Workbook(write_only=True)
ws = wb.create_sheet('产品参数')  # 手动创建一个工作表

# 准备数据
rows = [
    ['序号', '产品A', '产品B'],
    [1, 25, 57],
    [2, 30, 48],
    [3, 40, 45],
    [4, 50, 20],
    [5, 60, 50]
]

# 将数据写入到工作表中
for row in rows:
    ws.append(row)

# 创建面积对象
chart = AreaChart()
chart.title = "面积图"
chart.style = 14
chart.x_axis.title = '月份'
chart.y_axis.title = '利润(百万)'

data = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=7)
cats = Reference(ws, min_col=1, min_row=1, max_row=7)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)

ws.add_chart(chart, "A10")
wb.save('示例文件/面积图.xlsx')

绘制面积图-源码解析

这段代码使用 openpyxl 库在 Python 中创建一个 Excel 文件,并在其中插入一个面积图。下面是代码的详细分析:

导入库

from openpyxl import Workbook
from openpyxl.chart import AreaChart, Reference
  • Workbook 类用于创建新的 Excel 工作簿。

  • AreaChart 类用于创建面积图。

  • Reference 类用于定义图表的数据范围。

创建工作簿和工作表

wb = Workbook(write_only=True)
ws = wb.create_sheet('产品参数')
  • Workbook(write_only=True):创建一个只能写入的工作簿,适合大数据量的写入操作。

  • create_sheet('产品参数'):在工作簿中创建一个名为“产品参数”的工作表。

准备数据

rows = [
    ['序号', '产品A', '产品B'],
    [1, 25, 57],
    [2, 30, 48],
    [3, 40, 45],
    [4, 50, 20],
    [5, 60, 50]
]
  • 这里定义了一个二维数组 rows,包含了产品的序号以及两个产品(产品A和产品B)在不同月份的利润数据。

将数据写入工作表

for row in rows:
    ws.append(row)
  • 使用 append 方法将每一行数据添加到工作表中。

创建面积图对象并设置属性

chart = AreaChart()
chart.title = "面积图"
chart.style = 14
chart.x_axis.title = '月份'
chart.y_axis.title = '利润(百万)'
  • 创建一个 AreaChart 对象。

  • 设置图表的标题、样式、X轴和Y轴的标题。

定义图表的数据范围和类别

data = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=7)
cats = Reference(ws, min_col=1, min_row=1, max_row=7)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
  • Reference 对象用于指定图表的数据范围和类别范围。

  • add_data 方法用于添加数据区域,并设置 titles_from_data=True 以使用数据的第一行作为图例。

  • set_categories 方法用于设置 X 轴的类别。

将图表添加到工作表并保存工作簿

ws.add_chart(chart, "A10")
wb.save('示例文件/面积图.xlsx')
  • add_chart 方法将图表添加到工作表的指定位置(A10 单元格)。

  • save 方法用于保存工作簿到指定的文件路径。

总结

这段代码演示了如何使用 openpyxl 库在 Python 中创建一个包含面积图的 Excel 文件。它首先创建了一个工作簿和工作表,然后准备了数据并将其写入工作表。接着,它创建了一个面积图对象,设置了图表的属性和数据范围,并将图表添加到工作表中。最后,它保存了工作簿到一个文件。