本文主要讲述如何使用Python操作Excel绘制柱形图。

相关代码请参考 https://github.com/RustFisher/python-playground

本文链接:https://www.rustfisher.com/2019/11/19/Python/Python-op-excel_openpyxl_bar_column_chart/

开发工具,环境

  • PyCharm
  • Python3
  • Office Excel

前面我们已经创建好了一张Excel表。

现在我们要根据已有的数据,往里面添加柱形图。

柱形图 BarChart

参考《Python openpyxl Excel绘制柱形图》得知,我们主要使用BarChartBarChart3D类。

图表中许多的细节由BarChart属性控制。

后文都以chart1来表示柱形图对象 chart1 = BarChart()

数据来源范围 Reference

首先我们应该确定数据的范围。有数据才好绘图。这里使用的是Reference类来表示数据“引用”范围。

    data1 = Reference(st, min_col=2, min_row=1, max_row=7, max_col=3)
cats1 = Reference(st, min_col=1, min_row=2, max_row=7)

需要注意的是,范围的下标是从1开始的。

这里的data1把标题也框进去了。设定数据的时候,需要设置titles_from_data=True

chart1.add_data(data1, titles_from_data=True)

设置种类使用set_categories方法,也是把一个范围(Reference)的数据传入。

chart1.set_categories(cats1)

柱子方向控制 type

方向由属性type来控制,有2个可选参数:bar表示横向,col表示竖直。

chart1.type = "bar" # 横向柱形图
chart1.type = "col" # 纵向柱形图

标题 title

属性title控制标题。如果置为None则不显示标题。

图表的标题 chart1.title = "日均值对比"

坐标的标题,首先需要拿到x,y的坐标。

    chart1.y_axis.title = '数值'
chart1.x_axis.title = st.cell(column=1, row=1).value # 直接用单元格的内容做标题

添加图表

add_chart将图表添加到sheet中。图表的左上角对齐某个单元格。下面是对齐A8。

st.add_chart(chart1, 'A8')

3D柱形图 BarChart3D

柱子的形状 shape

默认是立方体,但也可以从下面的形状里选一个。

{'box', 'pyramid', 'pyramidToMax', 'coneToMax', 'cone', 'cylinder'}

chart1.type = 'cone'

box 是立方体,中规中矩。

pyramid 是金字塔,顶部也是尖的。

cone 是圆锥,看起来很尖锐。

cylinder 是圆柱。

配色风格 style

style 会影响图表的配色风格,一般用10比较多彩多样。

代码示例

绘制图表用的数据来自运营的Python指南 - Python 操作Excel

我们在已有的表格中添加柱形图。代码参考python-playground - Github

绘制2D柱形图

def create_bar_chart_1(file_path):
"""
插入柱形图
:param file_path: Excel 文件路径
:return: None
"""
wb = load_workbook(file_path)
st = wb.active data1 = Reference(st, min_col=2, min_row=1, max_row=7, max_col=3)
cats1 = Reference(st, min_col=1, min_row=2, max_row=7) chart1 = BarChart()
chart1.type = "col"
chart1.style = 9
chart1.title = "日均值对比"
# chart1.y_axis.title = '数值'
chart1.x_axis.title = st.cell(column=1, row=1).value chart1.add_data(data1, titles_from_data=True)
chart1.set_categories(cats1)
chart1.shape = 0
st.add_chart(chart1, 'A8')
wb.save(file_path)

绘制3D柱形图

def create_bar_chart_2(file_path):
"""
插入3D柱形图
:param file_path: Excel 文件路径
:return: None
"""
wb = load_workbook(file_path)
st = wb.active data1 = Reference(st, min_col=2, min_row=1, max_row=7, max_col=3)
cats1 = Reference(st, min_col=1, min_row=2, max_row=7) chart1 = BarChart3D()
chart1.type = "bar"
chart1.style = 10
chart1.title = "日均值对比"
chart1.x_axis.title = None
chart1.shape = 'cylinder' chart1.add_data(data1, titles_from_data=True)
chart1.set_categories(cats1)
st.add_chart(chart1, 'A26')
wb.save(file_path)

运行结果示例图片

Python Excel 绘制柱形图的更多相关文章

  1. Python openpyxl Excel绘制柱形图

    这是一份openpyxl的使用指南. 大体内容翻译自官网 https://openpyxl.readthedocs.io/en/stable/charts/bar.html#vertical-hori ...

  2. 厌倦了excel绘制地图的繁琐操作,来看看这款可视化地图神器!

    在现代生活中,地图无论对于社会主义建设.国防.运输以至旅行都是不可缺少的.要学会正确地使用地图,必须学会如何绘制地图. 最近我发现了一款好用的可视化地图神器,比excel做地图可视化好一万倍!其实呢, ...

  3. Python excel 库:Openpyxl xlrd 对比 介绍

    打算用python做一个写mtk camera driver的自动化工具. 模板选用标准库里面string -> Template 即可 但要重定义替换字符,稍后说明 配置文件纠结几天:cfg, ...

  4. iOS使用Charts框架绘制—柱形图

    首先看一下最终要实现的效果: 最终效果 一.初始化barChartView 绘制柱形图需要用到BarChartView这个类,下面是初始化代码: self.barChartView = [[BarCh ...

  5. python excel操作总结

    1.openpyxl包的导入 Dos命令行输入 pip install openpyxl==2.3.3 这里注意一下openpyxl包的版本问题 版本装的太高有很多api不支持了,所以笔者这里用的是2 ...

  6. Python Excel 多sheet 多条数据 自定义写入

    pip install xlwt python excel 数据写入操作,处理网站数据导出以及不是太多数据的爬虫存储, 用处蛮多的轮子. (150+++++++++++++++++++++++++++ ...

  7. Python turtle绘制阴阳太极图代码解析

    本文详细分析如何使用Python turtle绘制阴阳太极图,先来分解这个图形,图片中有四种颜色,每条曲线上的箭头表示乌龟移动的方向,首先从中心画一个半圆(红线),以红线所示圆的直径作半径画一个校园, ...

  8. python+matplotlib 绘制等高线

    python+matplotlib 绘制等高线 步骤有七: 有一个m*n维的矩阵(data),其元素的值代表高度 构造两个向量:x(1*n)和y(1*m).这两个向量用来构造网格坐标矩阵(网格坐标矩阵 ...

  9. xlrd python excel

     xlrd python excel

随机推荐

  1. mssql数据库提权

    1.关于 “xp_cmdshell” “存储过程”:其实质就是一个“集合”,那么是什么样的结合呢,就是存储在SqlServer中预先定义好的“SQL语句集合”,说的更直白一些就是使用T-SQL语言编写 ...

  2. PHP array_udiff_uassoc

    1.函数的参数:返回数组的差集.用定义的函数比较键值和值. 2.函数的参数: @params array $array @params array $array1 ... @params callab ...

  3. fread优化读入

    inline char nc() { static const int BS = 1 << 22; static unsigned char buf[BS],*st,*ed; if(st ...

  4. 【Cocos2d-x】学习笔记目录

    从2019年7月开始学习游戏引擎Cocos2dx,版本3.17. 学习笔记尽量以白话的形式表达自己对源码的理解,而不是大篇幅复制粘贴源码. 本人水平有限,欢迎批评指正! Cocos2d-x 学习笔记 ...

  5. ESP8266开发之旅 基础篇④ ESP8266与EEPROM

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  6. 【阿里云IoT+YF3300】7.物联网设备表达式运算

    很多时候从设备采集的数据并不能直接使用,还需要进行处理一下.如果采用脚本处理,有点太复杂了,而采用表达式运算,则很方便地解决了此类问题. 一.  设备连接 运行环境搭建:Win7系统请下载相关的设备驱 ...

  7. day1-02 python程序语法分析

    一.概述 程序的格式框架 命名与保留字 数据类型 语句与函数 Python程序的输入输出 二.程序的格式框架 # TempConvert.py # 输入温度 TempStr = input(" ...

  8. 【Bug】解决 java.sql.SQLSyntaxErrorException 异常

    java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax 错误 错误详情: Caused by: java.sql. ...

  9. calendar类-时间处理类

    calendar类 calendar类是时间处理类 比如在scala中 //字符串转化日期格式 val df = new SimpleDateFormat("yyyy-MM-dd hh:mm ...

  10. spring boot 面试题详解

    1.什么是springboot 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) 创建独立的spring引用程序 main方法运行 嵌入的T ...