当前位置: 首页 > 编程笔记 >

python xlsxwriter库生成图表的应用示例

翟兴邦
2023-03-14
本文向大家介绍python xlsxwriter库生成图表的应用示例,包括了python xlsxwriter库生成图表的应用示例的使用技巧和注意事项,需要的朋友参考一下

xlsxwriter可能用过的人并不是很多,不过使用后就会感觉,他的功能让你叹服,除了可以按要求生成你所需要的excel外

还可以加上很形象的各种图,比如柱状图、饼图、折线图等。

xlsxwriter 基本用法,创建 xlsx 文件并添加数据

官方文档:http://xlsxwriter.readthedocs.org/  

xlsxwriter 可以操作 xls 格式文件

注意:xlsxwriter 只能创建新文件,不可以修改原有文件。如果创建新文件时与原有文件同名,则会覆盖原有文件

Linux 下安装: sudo pip install XlsxWriter

Windows 下安装: pip install XlsxWriter

请看本人生成的:

 

这里包含了数据公式的计算,插入图片的连接,生成的图表,当然如果你还需要其他的功能,可以继续参考库的文档

下面把源代码贴出来,希望对大家在工作遇到类似的情况,可以直接拿去用。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Eric.yue

import xlsxwriter
import random
from datetime import date
import collections

def xlwt_chart(xl_obj,table):

  #生成柱状图
  column_chart = xl_obj.add_chart({'type':'column'})
  column_chart.add_series({
    'name':'=sheet1!$D$1',
    'categories':'=sheet1!$D$2:$D$7',
    'values':'=sheet1!$E$2:$E$7'
  })
  table.insert_chart('G2',column_chart)

  #生成饼图
  column_chart2 = xl_obj.add_chart({'type':'pie'})
  column_chart2.add_series({
    'name': '=sheet1!$D$1',
    'categories':'=sheet1!$D$2:$D$7',
    'values': '=sheet1!$E$2:$E$7'
  })
  table.insert_chart('G20', column_chart2)


def xlwt_run():
  data_base = ['0-50','50-60','60-70','70-80','80-90','90-100']

  #生成一个有序的字典
  chart_dict = collections.OrderedDict.fromkeys(data_base,0)

  xl_obj = xlsxwriter.Workbook('chart.xlsx')
  table = xl_obj.add_worksheet('sheet1')
  table.write_string(0,0,u'姓名')
  table.write_string(0,1,u'成绩')
  table.write_string(0,2,u'日期')
  table.merge_range('D1:E1', u'成绩分布')
  table.set_column('C:E',15)

  #定义格式
  date_format = xl_obj.add_format({'num_format':'yyyy-mm-dd'})
  color_format = xl_obj.add_format({'color':'red'})
  font_format = xl_obj.add_format({'font_color':'green','bold':True})

  mm = 1
  for i in xrange(1,40):
    name = 'name_%d' % i
    score = random.randint(30,100)
    if score <= 50:
      chart_dict['0-50'] += 1
    elif score>50 and score<=60:
      chart_dict['50-60'] += 1
    elif score>60 and score<=70:
      chart_dict['60-70'] += 1
    elif score>70 and score<=80:
      chart_dict['70-80'] += 1
    elif score>80 and score<=90:
      chart_dict['80-90'] += 1
    else:
      chart_dict['90-100'] += 1

    if score > 60:
      table.write_string(i, 0, name)
      table.write_number(i, 1, score)
    else:
      table.write_string(i, 0, name, color_format)
      table.write_number(i, 1, score, color_format)

    table.write_datetime(i, 2,date.today(), date_format)
    mm = mm + 1

  #生成图表数据
  row = 1
  for k,v in chart_dict.items():
    table.write_string(row, 3, k, font_format)
    table.write_number(row, 4, v, font_format)
    row = row+1

  xlwt_chart(xl_obj,table)
  #使用公式
  table.write_formula(mm,1,'=AVERAGE(B2:B40)')
  #插入带链接的图片
  table.insert_image('D20',r'/home/mywork/pythonchina/cto51_log/bd_logo12.png',{'url':'https://www.baidu.com'})

  #关闭excel句柄
  xl_obj.close()

if __name__ == '__main__':
  xlwt_run()

没有使用类写,只是即兴而作。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 昨天看到了一篇关于二维码使用的文章,其设计初衷是使用二维码卡片来帮助小朋友控制智能音箱。即在 Raspberry Pi 上使用摄像头来识别二维码,二维码卡片上是一些简单的操作,如播放音乐、暂停等等,卡片的另外一面则是相应的解释。这是一个有趣的二维码在物联网应用的场 景。 于是乎,我便想尝试一下直接在云端生成二维码图片,并保存。当然了,对于二维码来说,直接在浏览器上生成显然是更加简单友好的。 总览

  • 本文向大家介绍用Python生成HTML表格的方法示例,包括了用Python生成HTML表格的方法示例的使用技巧和注意事项,需要的朋友参考一下 在 邮件报表 之类的开发任务中,需要生成 HTML 表格。 使用 Python 生成 HTML 表格基本没啥难度, for 循环遍历一遍数据并输出标签即可。 如果需要实现合并单元格,或者按需调整表格样式,就比较麻烦了。 这时,可以试试本文的主角 —— ht

  • 问题内容: 我有一个PHP脚本,它会随机生成一个图像。像这样: 我的html看起来像这样: 然后,我有一个jquery文件来处理对按钮的单击,以便在单击按钮时加载新的随机图像: 我使用firebug,可以看到请求实际上已发送,并且响应已成功接收,但是图像没有改变。 我在做什么错,我该如何解决? 问题答案: 我添加了另一个答案,因为我认为以前的答案都无法解决问题。我认为,OP唯一想要的就是单击按钮时

  • 本文向大家介绍java生成饼图svg及JFreeChart生成svg图表,包括了java生成饼图svg及JFreeChart生成svg图表的使用技巧和注意事项,需要的朋友参考一下 Jfreechart本身不能生成SVG图形,但是可以借助另外一个东西,辅助生成.好像是这个:batik ,具体代码请看下文 一:Java生成svg饼图,附带了一个标签显示各个颜色代表的部分 二.java生成SVG 3D饼

  • 我有一个问题需要我在Boost图库中找到一个有向图的最小生成树。 我的第一个尝试是使用深度优先搜索和dfs-visitor。我的计划是忽略除树边回调之外的所有边。这不起作用,我给出了下面的例子来说明原因。 我的问题是我是否可以让我的dfs-visitor在BGL中创建一个有向图的最小生成树。 下面是失败的例子。如果我有以下有向图 在深度优先搜索dfs-visitor中,1->0被分类为前沿。 如果

  • 我试图找到一种算法,为我正在编写的图表引擎生成Y轴,并且处于拔毛阶段。 四处搜索会产生各种解决方案,但我很难找到一个适合所有数据范围的解决方案。 这是我到目前为止得到的: 这给了我一个新的范围,我想为它生成一个Y轴。 我计算每个YAxis标签之间的距离,如下所示: 我还尝试使用更简单的算法计算滴答声: 前一种方法适用于小范围,例如23- 在0的情况下- 我通过循环labelCount(在我的例子中