测试开发技术——python折线图生成

前言

测试开发技术中,数据处理技术在我们大量的测试数据,测试结果自动化生成,自动化报告等情况是非常常见的,常见的线上手段是生成为指定格式的json,sql等,通过结果给到后端,作为平台测试结果,测试数据展示。而本地的情况,更多的是通过csv或者excel等来保存,这里就分享一个python快速生成excel折线图的方法

关于分享

我是一个热衷分享的人,之前在网上查看python 生成 excel的图表,包括折线图,柱状图等等,看到网上能搜索到的文章都不实用,我觉得学习的路径应该是这样的:

  1. 立竿见影的使用体验(工程拿来就可以简单的使用起来,立刻看到效果)
  2. 循序渐进的查看过程(代码分析,查看文档适当解释)
  3. 逐步深入到设计过程(查看官方文档跟自己调试,进一步深入跟熟悉使用)

所以本文会由这样的顺序展开,希望可以帮助到大家

立竿见影的使用体验

代码仓:https://gitee.com/liciciyi/AlanTest
调用代码:

from charthelper.LineChartHelper import LineChartHelper

line_chart = LineChartHelper('../resource/alan0819.xlsx')
line_chart.add_linechart(chart_area="B1:D7", chart_categories=1,chart_title='日期图')

使用效果:

python图表生成技术对比

这里只分享几个老牌的库对比

xlwings:
可结合 VBA 实现对 Excel 编程,强大的数据输入分析能力,同时拥有丰富的接口,结合 pandas/numpy/matplotlib 轻松应对 Excel 数据处理工作。

openpyxl
简单易用,功能广泛,单元格格式/图片/表格/公式/筛选/批注/文件保护等等功能应有尽有,图表功能是其一大亮点,缺点是对 VBA 支持的不够好。

pandas:
数据处理是 pandas 的立身之本,Excel 作为 pandas 输入/输出数据的容器。

xlsxwriter:
拥有丰富的特性,支持图片/表格/图表/筛选/格式/公式等,功能与openpyxl相似,优点是相比 openpyxl 还支持 VBA 文件导入,迷你图等功能,缺点是不能打开/修改已有文件,意味着使用 xlsxwriter 需要从零开始。

数据处理中,我个人是推荐openpyxl + pandas ,核心是pandas,这个数据处理在python中是非常非常常用的一个库,numpy + pandas + Pillow + matplotlib这个组合在机器学习,数据挖掘等领域都是非常实用的。不推荐xlswriter是因为,对比openpyxl,xlswriter只能新建文件的时候插入图片,对于依存数据的excel,无法插入图片。

循序渐进的查看过程

比较核心的使用主要有以下几个部分

chart = LineChart()
chart.style
chart.title = chart_title if chart_title is not None else "LineChart"
chart.y_axis.title = y_lable if y_lable is not None else "y轴"
chart.x_axis.title = x_lable if x_lable is not None else "x轴"
# 处理图表区数据
'''
area 为如下图所示表格
B1 | B2 | B3
------------
40 | 30 | 25
40 | 25 | 30
'''
(start, end) = chart_area.split(':') # A1:D7
start_row = int(start[1])
end_row = int(end[1])
start_col = ord(start[0]) - ord('A') + 1
end_col = ord(end[0]) - ord('A') + 1
ChartValues = Reference(ws, min_col=start_col, min_row=start_row, max_col=end_col,
max_row=end_row)
chart.add_data(ChartValues,titles_from_data=True)
# 处理横轴数据
if chart_categories is not None:
    categories = Reference(ws, min_col=chart_categories, min_row=start_row+1, max_row=end_row)
    chart.set_categories(categories)
if chart_position is None:
    chart_position = 'A' + str(end_row + 2)
    logger.info("chart position is not given, now save the chart in {0}".format(chart_position))

逐步深入到设计过程

https://www.osgeo.cn/openpyxl/charts/bar.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值