libxlsxwriter的功能覆盖面很大,今天一起来看一下如何用这个库来生成带有簇状柱形图的表格。

1 簇形柱状图

首先来看一下Excel的样例表格,簇状柱形图往往是用来对比若干“系列”的数据在某一时间段内,或某一情境下的差异情况。在商务领域还是非常常见的。

对于人工智能领域的程序员来说,往往更熟悉的簇状柱形图是核弹厂的性能对比图:

题外话题外话~

这种图表相信大多数人已经非常熟悉。这里就不多说了。它的几个要素为:

  • 系列
  • 柱形
  • 成簇

2 代码示例及详解

二话不说,先上代码。

#include "xlsxwriter.h"
#include <iostream>
#include <wchar.h>
#include <windows.h>using std::string;string GBKToUTF8(const char* strGBK)
{int len = MultiByteToWideChar(CP_ACP, 0, strGBK, -1, NULL, 0);wchar_t* wstr = new wchar_t[len + 1];memset(wstr, 0, len + 1);MultiByteToWideChar(CP_ACP, 0, strGBK, -1, wstr, len);len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);char* str = new char[len + 1];memset(str, 0, len + 1);WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);string strTemp = str;if (wstr) delete[] wstr;if (str) delete[] str;return strTemp;
}/* 向worksheet中写入一些数据. */
void write_worksheet_data(lxw_worksheet* worksheet) {uint8_t data[5][3] = {/* 三列数据. */{1,   2,   3},{2,   4,   6},{3,   6,   9},{4,   8,  12},{5,  10,  15}};int row, col;worksheet_write_string(worksheet, 0, 0, GBKToUTF8("2018年").data(), NULL);                     worksheet_write_string(worksheet, 1, 0, GBKToUTF8("2019年").data(), NULL);worksheet_write_string(worksheet, 2, 0, GBKToUTF8("2020年").data(), NULL);worksheet_write_string(worksheet, 3, 0, GBKToUTF8("2021年").data(), NULL);worksheet_write_string(worksheet, 4, 0, GBKToUTF8("2022年").data(), NULL);for (row = 0; row < 5; row++){for (col = 1; col < 4; col++){worksheet_write_number(worksheet, row, col, data[row][col-1], NULL);}}
}/* 创建一个带有图表的表格文件. */
int main(int argc, char* argv[])
{lxw_workbook* workbook = workbook_new(GBKToUTF8("簇状柱形图示例.xlsx").data());                           lxw_worksheet* worksheet = workbook_add_worksheet(workbook, NULL);/* 向表格中写入一些数据. */write_worksheet_data(worksheet);/* 创建一个图表对象. */lxw_chart* chart = workbook_add_chart(workbook, LXW_CHART_COLUMN);// 指定表格,在最简单的例子中我们添加一些数据系列,空的系列种类将默认为1到5// 若非空指定数据系列的名称,则可以按照索引列进行指定。lxw_chart_series* series1 = chart_add_series(chart, "=Sheet1!$A$1:$A$5", "=Sheet1!$B$1:$B$5");lxw_chart_series* series2 = chart_add_series(chart, NULL, "=Sheet1!$C$1:$C$5");lxw_chart_series* series3 = chart_add_series(chart, NULL, "=Sheet1!$D$1:$D$5");chart_series_set_categories(series1, "Sheet1", 0, 0, 4, 0);chart_series_set_categories(series2, "Sheet1", 0, 0, 4, 0);chart_series_set_categories(series3, "Sheet1", 0, 0, 4, 0);// 给表格添加系列名称chart_series_set_name(series1, GBKToUTF8("青菜").data());chart_series_set_name(series2, GBKToUTF8("萝卜").data());chart_series_set_name(series3, GBKToUTF8("鸡蛋").data());// 给表头文字设置格式lxw_chart_font font;font.bold = LXW_EXPLICIT_FALSE;font.color = LXW_COLOR_GREEN;chart_title_set_name(chart, GBKToUTF8("年终销售情况").data());chart_title_set_name_font(chart, &font);// 给坐标轴添加名称chart_axis_set_name(chart->x_axis, GBKToUTF8("年份").data());chart_axis_set_name(chart->y_axis, GBKToUTF8("万吨").data());/* 向worksheet中插入图表. */worksheet_insert_chart(worksheet, CELL("B7"), chart);return workbook_close(workbook);
}

小白这里的代码还是延续了这个系列文章的一贯风格,即将中文使用添加进了例程之中。以上例程改编自libxlsxwriter官网的例程chart.c。

以上程序生成一个名为簇状柱形图示例.xlsx的表格。最终内容呈现如下图所示:

重点需要说明的是:

系列,即图中横坐标上的2018年~2022年,有两种方式进行插入

  • chart_add_series(chart, "=Sheet1!$A$1:$A$5", "=Sheet1!$B$1:$B$5");这种方式中第二个参数指定了系列数据的来源是A1到A5单元格;
  • chart_series_set_categories(series1, "Sheet1", 0, 0, 4, 0);这种方式通过坐标指定(0,0)到(0,4)单元格为系列的数据来源。

chart_series_set_name(series1, GBKToUTF8("青菜").data());通过这种方式给系列指定名称。

chart_axis_set_name(chart->x_axis, GBKToUTF8("年份").data());通过这种方式来给坐标轴插入标题;

worksheet_insert_chart(worksheet, CELL("B7"), chart); 通过这种方式来将图表插入到表格中的指定位置(图片的左上角插入到对应的单元格,此例中插入到B7)。

看似简单,实际上,确实也不难。注意消化掉这个例程就好。还有一些其他的表格相关的指定功能这里可能没涉及到,在以后的博客文章中可能慢慢涉及。

libxlsxwriter簇状柱形图绘制相关推荐

  1. Matplotlib绘制堆积柱形图和簇状柱形图:学生成绩的简单可视化

    堆积柱形图 首先,导入包. import numpy as np import pandas as pd import matplotlib.pyplot as plt 导入数据并查看. data= ...

  2. Aspose.Cells绘制三维簇状柱形图

    Aspose.Cells 绘制Excel三维簇状柱形图 数据 创建工作簿 创建图表 一般设置 保存 数据 创建工作簿 var book = new Workbook(); book.Worksheet ...

  3. excel表格计算机簇状图,excel表格怎么绘制簇状柱形图

    在excel表格中,为了让数据更加明晰通常会使用簇状柱形图,这种图表应该怎么绘制呢?下面随学习啦小编一起来看看吧. excel表格绘制簇状柱形图的步骤 用excel简单制作可视化图表,首先我们需要添加 ...

  4. 水平圆柱体计算机表格,《excel表格中数据用簇状柱图形表示》 excel怎么做簇状柱形图...

    excel怎么做簇状柱形图 1.首先在电脑上打开Excel软件下来在Excel建一个文档表格. 2.接下来在表格中输入需要处理的数据下为例演示,然后将这些数据全部选中. 3.接下来在上方工具栏中选择& ...

  5. python簇状柱形图_Python:matplotlib 和 Seaborn 之簇状柱形图、分面 (三十五)

    簇状柱形图 为了描绘两个分类变量之间的关系,我们可以将在上节课见到的单变量条形图扩展为簇状柱形图.和标准条形图一样,我们依然需要描绘每组的数据点计数,但是每组现在是两个变量的标签组合.因此我们需要按照 ...

  6. 计算机电子表格三维簇状柱形图怎么设置,Excel中怎么制作柱形对比图【excel表格数据生成柱形图】...

    怎么创建Excel簇状柱形图并设置图表的格 第一步:插入---图表----选择"簇状柱形图" 在图表区域右击---选择数据-----点击" "号-----选择系 ...

  7. 计算机电子表格三维簇状柱形图怎么设置,excel怎么制作三维簇状柱形图 excel三维簇状柱形图如何添加标题...

    在我们使用excel表格统计数据时,可以制作各种各样的图形来统计,比如说饼图.折线图.瀑布图等等,近日很多用户比较常用三维簇状柱形图,看到它的名字就知道不简单,那么excel怎么制作三维簇状柱形图呢? ...

  8. matlab画簇状堆积柱状图怎么调颜色,簇状柱形图实用技巧——“超额”的完美展示与设置!...

    原标题:簇状柱形图实用技巧--"超额"的完美展示与设置! 簇状柱形图,也是Excel图表中常见的图表,但是如何有效的使用簇状柱形图,或者利用簇状柱形图形象直观的显示数据,一直是很多 ...

  9. python簇状柱形图_python学习之路--可视化利器matplotlib(上)

    前几期已经把读写数据.数据预处理等介绍完了,今天我们接着介绍一个可视化的库matplotlib,虽说现在已经有了更为高级的可视化库,如seaborn,ploty,pyecharts等,但是matplo ...

最新文章

  1. Java多线程之间访问实例变量
  2. delphi编译缺少组件 imgedit excel2000等
  3. 自学ng2 -生命周期钩子
  4. java icache_Java ICacheWordSubscriber類代碼示例
  5. 计算机应用技术面试的礼仪和技巧,远程复试下,这些面试礼仪一定要注意!
  6. dr. unarchiver_1F 新店开业男士一生仅能定制一枚的钻戒,DR 教你用一生爱一人
  7. 大学c语言第三章作业,c语言程序设计一章部分和第三章习题答案.doc
  8. Apache Prefork、Worker和Event三种工作模式分析
  9. rostcm6情感分析案例分析_情感分析师在线指导情感挽回
  10. 小米商场html幻灯片代码,小米商城商品详情页布局(HTML代码太长贴不上去,只能贴jQuery代码)...
  11. U盘装系统工具哪个好用?
  12. NXP RT1052 eFlexPWM—灵活的增强型 PWM
  13. 联想扬天ACPI\LBAI0100未知设备的处理方法 此驱动为电源管理
  14. 自定义TimeLine
  15. 根据银行卡号查询银行卡名称
  16. 单片机 数码管0~F显示
  17. 并发编程面试宝典(内含69道常问面试题及答案解析)
  18. Avast 发布免费的 BianLian 勒索软件解密器
  19. 布法罗博士计算机专业回国人员,2020年纽约州立大学布法罗分校博士专业设置...
  20. 220V接LED指示灯电阻需要多大

热门文章

  1. 使用Unity制作节奏律动效果
  2. 研究项目管理过程与领域知识及其关系
  3. linux软连接-python软连接创建、删除、查看
  4. 从0开始的Java周记-第一周(Java虚拟ATM的使用)
  5. 科技信息检索与论文写作专题讲座(文献检索与利用)课后答案
  6. 提升客户体验最基础的入门,老板你知道吗?
  7. 新电脑到了不知道怎么做?电脑分盘,软件推荐,使用指南等
  8. 离开武汉的500万人去哪里了?别让他们流浪街头!
  9. 上海流浪汉沈_流浪汉厨师独奏
  10. Spring Cloud 微服务技术栈