美文网首页Python精选
Matplotlib商务图表绘制

Matplotlib商务图表绘制

作者: 早起收果子 | 来源:发表于2020-03-03 03:28 被阅读0次

0 前言

针对业余学习python的人,工作中主要还是使用office三件套,做图还是靠excel,琐碎复杂和重复。这里主要是希望分享给普通职场人,如何利用python绘制咨询报告或者PPT中常用的图表。

图1 咨询报告图片

利用matplotlib代替excel绘制图表有如下几个好处:

1. 可以修改图表中所有的元素,另存为矢量图,高清,然后可应用于各种文档。

2. 熟练后,图表代码可以反复利用,只需要导入数据微调即可。

3. 整个绘图思路更有逻辑,相对Excel,更有趣不枯燥。(说着我都信了)

4. 最重要还是比较酷,学了python又不是程序员,总得做点力所能及又有意思的事儿。

1 如何画出高大上的图表?

各个行业的咨询机构,他们通常都自己的图表绘制规范,模仿咨询报告中的图表来高大上地,可以瞬间让自己的图表也高大上起业,升职,加薪,走上人生巅峰。我这里梳理了一下,画图的三个步骤。

图2 绘图步骤

以能源行业为例,如图1咨询报告图表所示,在上百页的报告里面,我们需要分析出现频率最高是哪三种类型的图表。然后,就盘这三种图表就好。在这份报告里面,大量地运用了各种条形图和拆线图,基础实用。下面,我就以其中最简单的最好看的的条形图,进行一个示例。

2. 开始图表绘制

下图是一个最基础的条形图,首先,分析这个图表和matplotlib默认的图表样式有什么不同。上轴线和右侧轴线没有。Y轴没有刻度线,没有轴线,只有刻度值。网格形式不同。颜色不同。修改的东西太多,所以我们一般第一步是选择一个matplotlib类似的模版,我这里选择的是seaborn-white。

图3. 报告原图

2.1 导入数据

工作中一般人大部分的数据都存在excel里面。可以用xlwings模版直接导入excel里面的数据,关于xlwings模块的介绍可以详见我的其他文章《插上翅膀,让Excel飞起来》。

import xlwings as xw

import matplotlib.pyplot as plt

from matplotlib.ticker import StrMethodFormatter

#设置图表字体和字号

plt.rcParams['font.sans-serif']=['Arial']

plt.rcParams['font.size']=8

# 导入数据(易出错,导致excel进程卡死,使用try语句)

try:

    app=xw.App(visible=False,add_book=False)

    file_path=r'g:\00 My Document\Computer Science\Code Resource\bar_data.xlsx'

    wb=app.books.open(file_path)

    width = 0.8

    x_labels=wb.sheets['xlabel'].range('A1').expand('down').value

    x1=wb.sheets['X'].range('A1').expand('down').value

    x2=wb.sheets['X'].range('B1').expand('down').value

    y1=wb.sheets['Y'].range('A1').expand('down').value

    y2=wb.sheets['Y'].range('B1').expand('down').value

    color1=wb.sheets['color'].range('A1').expand('down').value

    color2=wb.sheets['color'].range('B1').expand('down').value

    label1=r'2015'

    label2=r'2040'

    x_ticks=[i+0.5 for i in x1]

    app.quit()

except:

    app.quit()

3.2 绘制数据

#绘制数据

plt.style.use('seaborn-white')

fig=plt.figure(figsize=(5.5,3.5))

ax=fig.add_subplot()

rects1 = ax.bar(x1,y1, width=width, label=label1,color=color1,zorder=4)

rects2 = ax.bar(x2,y2, width=width, label=label2,color=color2,zorder=4)

for i,j in zip(x2,y2):

    ax.text(i,j+100,'{:,.0f}'.format(j),horizontalalignment='center')

草稿1

3.3 坐标轴及网格线设置

#坐标轴及网格线设置

ax.set_ylim((0,5000))#设置Y轴范围

ymajorFormatter = StrMethodFormatter('{x:,.0f}')#Y轴刻度千分位显示

ax.yaxis.set_major_formatter(ymajorFormatter)#Y轴刻度千分位显示

ax.spines['top'].set_visible(False) #去掉上边框

ax.spines['left'].set_visible(False) #去掉左边框

ax.spines['right'].set_visible(False) #去掉右边框

ax.spines['right'].set_color(color1)#设置x轴颜色

ax.spines['bottom'].set_zorder(4)#设置x轴图层高于条形图

ax.yaxis.grid(color=color1, linestyle=':', linewidth=1,alpha=0.3)#设置网格

#添加x轴坐标

ax.set_xticks(x_ticks)

ax.set_xticklabels(x_labels)


草稿2

3.4 绘制图例、标题和注释并保存

#绘制图例及标题并保存

title='Figure 1.2 Demand Forecast by ERIA'

note='ERIA = Economic Research Institute for ASEAN and East Asia,ktoe = kilotonnes of\noil equivalent,LPG = liquefied petroleum gas.\nSource: ERIA Outlook 2018.'

#图例

ax.legend(ncol=2,loc='center',bbox_to_anchor=(0.5,-0.1))

#标题

ax.set_title(title,pad=20,fontname='Times New Roman', fontsize=10)

#注释

ax.text(9,5200,r'(1,000 ktoe)',alpha=0.8)

ax.text(0,-1300,note,alpha=0.8)

#保存

fig.savefig('demo.svg',dpi=600,bbox_inches = 'tight')

终稿

4. 结语

1. Matplotlib可应用绘制日常工作中的工作报告或者PPT所需要的高质量图表,而不仅只用于科研绘图或者大数据的可视化。

2. 绘图90%的工作主要是对坐标轴、字体、颜色等进行设置,实际上关于这些代码可以反复利用。

3. 如需交流或者需要原代码和示例数据,欢迎关注我的公众号:早起收果子

相关文章

  • Matplotlib商务图表绘制

    0 前言 针对业余学习python的人,工作中主要还是使用office三件套,做图还是靠excel,琐碎复杂和重复...

  • RuntimeError: implement_array_fu

    记录一下在python中用matplotlib模块进行图表的绘制问题原因:matplotlib绘制图表需要使用到n...

  • matplotlib 实践(1) 使用函数绘制matplotli

    第一章:使用函数绘制matplotlib的图表组成元素 1.1 绘制matplotlib的主要函数 1.2 准备数...

  • matplotlib图表绘制

    一.安装 二.折线图 三.撒点图 三.随机漫步random_walk.py rw_visual.py 四.Pyga...

  • 一、Matplotlib初相识

    1 认识matplotlib Matplotlib是一个Python 2D绘图库,可以绘制静态,动态,交互式的图表...

  • 各种图形展示

    折线图绘制 import matplotlib.pyplotas pie#导入图表库 pie.rcParams['...

  • 图表绘制工具Matplotlib

    这一张内容比较基础都是关于图形的一些函数与参数设置,很多函数和参数都与MATLAB比较相似,所以学习起来相对还是比...

  • 86、绘制折线图

    使用matplotlib可制作的最简单的图表 下面来使用matplotlib绘制一个简单的折线图,再对其进...

  • matplotlib的中文设置

    在matplotlib中绘制图表时中文不能正确显示,这是因为matplotlib的默认设置中没有支持中文,只需要对...

  • Matplotlib绘制Broken Barh图表

    代码如下所示,在其中进行注释 最终图形如下所示:

网友评论

    本文标题:Matplotlib商务图表绘制

    本文链接:https://www.haomeiwen.com/subject/huuakhtx.html