本文代码及数据集来自《超简单:用Python让Excel飞起来(实战150例)》

# 制作柱形图(方法一)
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 4)) # 创建一个绘图窗口
x = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
y = [100, 90, 88, 70, 66, 50, 40, 55, 56, 88, 95, 98]
plt.bar(x, y, width=0.5, align='center', color='k') # 根据给出的数据制作柱形图
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
plt.show()# 制作柱形图(方法二)
from pyecharts.charts import Bar
x = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
y = [100, 90, 88, 70, 66, 50, 40, 55, 56, 88, 95, 98]
chart = Bar() # 创建一个空白柱形图
chart.add_xaxis(x) # 为图表添加x坐标的值
chart.add_yaxis('销售量', y)
chart.render('柱形图.html') # 将制作的图表保存为网页文件# 制作折线图
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 4))
x = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
y = [100, 90, 88, 70, 66, 50, 40, 55, 56, 88, 95, 98]
plt.plot(x, y, color='k', linewidth=3, linestyle='solid', marker='s', markersize=10) # 根据给出的数据制作折线图
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
plt.show()# 制作饼图
import matplotlib.pyplot as plt
plt.figure(figsize=(6, 4))
x = ['上海', '北京', '深圳', '重庆', '大连', '成都', '天津']
y = [120, 150, 88, 70, 96, 50, 40]
plt.pie(y, labels=x, labeldistance=1.1, autopct='%.2f%%', pctdistance=1.5, counterclock=False, startangle=90, explode=[0.3, 0, 0, 0, 0, 0, 0]) # 将饼图中的第1个饼图块分离出来
# 如果不分离饼图块,plt.pie(y,labels=x,labeldistance=1.1,autopct='%.2f%%',pctdistance=1.5,counterclock=False,startangle=90)
# 制作圆环图可通过设置该函数的参数wedgeprops来实现
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
plt.show()# 添加图表标题和图例
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 4))
x = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
y = [100, 90, 88, 70, 66, 50, 40, 55, 56, 88, 95, 98]
plt.bar(x, y, width=0.5, align='center', color='k', label='销售量(台)') # 根据给出的数据制作柱形图
plt.legend(loc='best', fontsize=12) # 为图表添加图表标题
plt.title(label='销售量对比图', fontdict={'family': 'KaiTi', 'color': 'k', 'size': 25}, loc='center')
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
plt.show()# 添加数据标签
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 4))
x = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
y = [100, 90, 88, 70, 66, 50, 40, 55, 56, 88, 95, 98]
plt.bar(x, y, width=0.5, align='center', color='k')
for a, b in zip(x, y):plt.text(x=a, y=b, s=b, ha='center', va='bottom', fontdict={'family': 'KaiTi', 'color': 'k', 'size': 15}) # 添加并设置数据标签
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
plt.show()# 添加坐标轴标题
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 4))
x = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
y = [100, 90, 88, 70, 66, 50, 40, 55, 56, 88, 95, 98]
plt.bar(x, y, width=0.5, align='center', color='k')
plt.xlabel('月份', fontdict={'family': 'SimSun', 'color': 'k', 'size': 12}, labelpad=2)
plt.ylabel('销售量(台)', fontdict={'family': 'SimSun', 'color': 'k', 'size': 12}, labelpad=2)
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
plt.show()# 添加网格线
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 4))
x = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
y = [100, 90, 88, 70, 66, 50, 40, 55, 56, 88, 95, 98]
plt.plot(x, y, color='k', linewidth=3, linestyle='solid')
plt.grid(b=True, axis='both', color='r', linestyle='dotted', linewidth=1)
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
plt.show()# 调整坐标轴的刻度范围
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 4))
x = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
y = [100, 90, 88, 70, 66, 50, 40, 55, 56, 88, 95, 98]
plt.plot(x, y, color='k', linewidth=3, linestyle='solid')
plt.title(label='销售量趋势图', fontdict={'family': 'KaiTi', 'color': 'k', 'size': 25}, loc='center')
plt.ylim(20, 120) # 设置y轴的刻度范围
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
plt.show()# 在一张画布中绘制多个图表
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 6))
x = ['上海', '北京', '深圳', '重庆', '大连', '成都', '天津']
y = [120, 150, 88, 70, 96, 50, 40]
plt.subplot(2, 2, 1) # 将整张画布划分为2行2列,并指定在第1个区域中绘制图表
plt.bar(x, y, width=0.5, align='center', color='r')
plt.subplot(2, 2, 2)
plt.pie(y, labels=x, labeldistance=1.1, autopct='%.2f%%', pctdistance=1.6)
plt.subplot(2, 2, 3)
plt.plot(x, y, color='r', linewidth=3, linestyle='solid')
plt.subplot(2, 2, 4)
plt.stackplot(x, y, color='r')
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
plt.show()# 在一个工作表中插入图表
import pandas as pd
import matplotlib.pyplot as plt
import xlwings as xw
figure = plt.figure(figsize=(10, 4))
data = pd.read_excel('各月销售数量表.xlsx', sheet_name='1月')
x = data['配件名称']
y = data['销售数量']
plt.bar(x, y, width=0.5, align='center', color='k')
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
app = xw.App(visible=False, add_book=False)
workbook = app.books.open('各月销售数量表.xlsx') # 打开要插入图表的工作簿
worksheet = workbook.sheets['1月']
worksheet.pictures.add(figure, left=500) # 在指定工作表中插入柱形图
workbook.save('各月销售数量表1.xlsx')
workbook.close()
app.quit()# 在一个工作簿的所有工作表中插入图表
import pandas as pd
import matplotlib.pyplot as plt
import xlwings as xw
all_data = pd.read_excel('各月销售数量表.xlsx', sheet_name=None)
app = xw.App(visible=False, add_book=False)
workbook = app.books.open('各月销售数量表.xlsx')
worksheet = workbook.sheets
for i in all_data:figure = plt.figure(figsize=(10, 4))data = all_data[i]x = data['配件名称']y = data['销售数量']plt.bar(x, y, width=0.5, align='center', color='k')plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']plt.rcParams['axes.unicode_minus'] = Falseworksheet[i].pictures.add(figure, left=500)
workbook.save('各月销售数量表1.xlsx')
workbook.close()
app.quit()# 制作散点图
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import linear_model
figure = plt.figure(figsize=(10, 4))
data = pd.read_excel('客户满意度表.xlsx', sheet_name='Sheet1')
x = data['收货天数(天)']
y = data['客户满意度']
plt.scatter(x, y, s=100, marker='o', color='k')
x1 = x.to_numpy().reshape(-1, 1) # 将自变量数据转换为二维数组格式
model = linear_model.LinearRegression().fit(x1, y) # 创建并训练了一个线性回归模型
y1 = model.predict(x1)
plt.plot(x, y1, color='k', linewidth='3', linestyle='solid') # 根据预测结果制作了一条线性趋势线
plt.title(label='收货天数与客户满意度关系图', fontdict={'family': 'KaiTi', 'color': 'k', 'size': 25}, loc='center')
plt.xlabel('收货天数(天)', fontdict={'family': 'SimSun', 'color': 'k', 'size': 12}, labelpad=2)
plt.ylabel('客户满意度', fontdict={'family': 'SimSun', 'color': 'k', 'size': 12}, labelpad=2)
plt.xlim(0, 22.5) # 设置坐标轴的刻度范围
plt.ylim(0, 12)
plt.rcParams['axes.unicode_minus'] = False
plt.show()# 制作涟漪特效散点图
import pandas as pd
import pyecharts.options as opts
from pyecharts.charts import EffectScatter
data = pd.read_excel('客户满意度表.xlsx', sheet_name='Sheet1')
x = data['收货天数(天)']
y = data['客户满意度']
chart = EffectScatter()
chart.add_xaxis(x) # 为散点图添加x坐标的值
chart.add_yaxis(series_name='收货天数(天),客户满意度', y_axis=y, label_opts=opts.LabelOpts(is_show=False), symbol_size=15)
chart.set_global_opts(title_opts=opts.TitleOpts(title='收货天数与客户满意度散点图'), yaxis_opts=opts.AxisOpts(type_='value', name='客户满意度', name_location='middle', name_gap=40), xaxis_opts=opts.AxisOpts(type_='value', name='收货天数(天)', name_location='middle', name_gap=40), tooltip_opts=opts.TooltipOpts(trigger='item', formatter='{a}:{c}')) # 为图表添加图表标题和坐标轴标题
chart.render('散点图.html') # 将制作的散点图保存为一个网页文件# 制作气泡图
import matplotlib.pyplot as plt
import pandas as pd
plt.figure(figsize=(10, 5))
data = pd.read_excel('销售统计表.xlsx', sheet_name='Sheet1')
n = data['产品名称'] # 指定“产品名称”的数据作为数据标签的内容
x = data['销售量(台)']
y = data['销售额(元)']
z = data['毛利率(%)'] # 指定“毛利率(%)”作为气泡大小
plt.scatter(x, y, s=z * 5000, color='r', marker='o')
plt.xlabel('销售量(台)', fontdict={'family': 'Microsoft YaHei', 'color': 'k', 'size': 12}, labelpad=2)
plt.ylabel('销售额(元)', fontdict={'family': 'Microsoft YaHei', 'color': 'k', 'size': 12}, labelpad=2)
plt.title('销售量、销售额与毛利率关系图', fontdict={'family': 'Microsoft YaHei', 'color': 'k', 'size': 20}, loc='center')
for a, b, c in zip(x, y, n):plt.text(x=a, y=b, s=c, ha='center', va='center', fontsize=12, color='w')
plt.xlim(20, 100)
plt.ylim(0, 50000)
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
plt.show()# 制作组合图表
import pandas as pd
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 5))
data = pd.read_excel('各月销售额统计表.xlsx', sheet_name='Sheet1')
x = data['月份']
y1 = data['销售额(万元)']
y2 = data['同比增长率']
plt.bar(x, y1, color='y', label='销售额(万元)') # 使用第1组y坐标值绘制了一个柱形图
plt.legend(loc='upper left', fontsize=12)
plt.twinx()
plt.plot(x, y2, color='r', linewidth='3', label='同比增长率') # 使用第2组y坐标值绘制了一个折线图
plt.legend(loc='upper right', fontsize=10)
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
plt.show()# 制作雷达图
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
colors = ['r', 'g', 'y'] # 设置每个员工在图表中的显示颜色
data = pd.read_excel('员工能力评价表.xlsx', sheet_name='Sheet1', index_col=0).T
staff = data.index.to_list() # 从行索引中获取员工名称
# 如只显示“A员工”的数据,则将这行代码修改为“staff=['A员工']”
column = data.columns.to_list() # 从列索引中获取评价指标名称
angle = np.linspace(0.1 * np.pi, 2.1 * np.pi, len(column), endpoint=False) # 根据评价指标的个数对圆形进行等分
angle = np.concatenate((angle, [angle[0]])) # 连接刻度线数据
column = np.concatenate((column, [column[0]])) # 连接指标名称数据
figure = plt.figure(figsize=(8, 6)) # 创建了一张宽8英寸、高6英寸的画布
ax = figure.add_subplot(1, 1, 1, projection='polar') # 将这张画布划分为1行1列,指定在第1个区域中绘图,并设置坐标体系为极坐标
for i, j in enumerate(staff):staff_data = data.loc[j] # 获取员工的指标分值数据staff_data = np.concatenate((staff_data, [staff_data[0]])) # 连接员工的指标分值数据ax.plot(angle, staff_data, linestyle='-', linewidth=2, color=colors[i], label=str(j)) # 制作雷达图ax.fill(angle, staff_data, color=colors[i], alpha=0.7) # 为雷达图填充颜色
ax.legend(loc=4, bbox_to_anchor=(1.15, -0.07)) # 参数loc=4表示将图例放置在右下角
ax.set_thetagrids(angle * 180 / np.pi, column, fontsize=12)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.show()# 制作漏斗图
import pyecharts.options as opts
from pyecharts.charts import Funnel
x = ['浏览商品', '放入购物车', '生成订单', '支付订单', '完成交易']
y = [1200, 800, 300, 280, 250]
data = [i for i in zip(x, y)]
chart = Funnel()
chart.add(series_name='人数', data_pair=data, label_opts=opts.LabelOpts(is_show=True, position='inside'), tooltip_opts=opts.TooltipOpts(trigger='item', formatter='{a}:{c}')) # 添加并设置图表的系列名称、系列数据值和提示框等
chart.set_global_opts(title_opts = opts.TitleOpts(title='电商网站流量转化漏斗图', pos_left='center'), legend_opts=opts.LegendOpts(is_show=False))
chart.render('漏斗图.html')# 制作水球图
import pyecharts.options as opts
from pyecharts.charts import Liquid
actual_sale1 = 900000
actual_sale2 = 1589000
actual_sale3 = 285200
target_sale = 1200000 # 指定了3个地区共同的目标销售业绩
chart = Liquid()
chart.set_global_opts(title_opts=opts.TitleOpts(title='各地区销售业绩达成率', pos_left='center'))
chart.add(series_name='北京', data=[actual_sale1 / target_sale], shape='circle', center=['20%', '50%'])
chart.add(series_name='上海', data=[actual_sale2 / target_sale], shape='circle', center=['50%', '50%'])
chart.add(series_name='成都', data=[actual_sale3 / target_sale], shape='circle', center=['80%', '50%'])
chart.render('水球图.html')# 制作仪表盘
import pyecharts.options as opts
from pyecharts.charts import Gauge
chart = Gauge()
chart.add(series_name='业务指标', data_pair=[('完成率', 70.95)], split_number=10, radius='75%', start_angle=225, end_angle=-45, is_clock_wise=True, title_label_opts=opts.GaugeTitleOpts(font_size=30, color='red', font_family='Microsoft YaHei'), detail_label_opts=opts.GaugeDetailOpts(is_show=False))
chart.set_global_opts(legend_opts=opts.LegendOpts(is_show=False), tooltip_opts=opts.TooltipOpts(is_show=True, formatter='{a}<br/>{b}:{c}%'))
chart.render('仪表盘.html')# 制作词云图
import pandas as pd
import pyecharts.options as opts
from pyecharts.charts import WordCloud
data = pd.read_excel('图书销量表.xlsx', sheet_name='Sheet1')
name = data['书名']
value = data['销售量(本)']
data1 = [i for i in zip(name, value)] # 将列表name和value中对应的元素配对打包成一个个元组,然后将这些元组组成一个列表
chart = WordCloud()
chart.add('销售量(本)', data_pair=data1, shape='star', word_size_range=[10, 60])
chart.set_global_opts(title_opts=opts.TitleOpts(title='图书销量分析', title_textstyle_opts=opts.TextStyleOpts(font_size=30)), tooltip_opts=opts.TooltipOpts(is_show=True))
chart.render('词云图.html')

用python对excel进行图表操作相关推荐

  1. python对excel进行读写操作

    python对excel进行读写操作 欢迎使用Markdown编辑器 一.安装库 1.安装xlrd模块 2.安装xlwt模块 2.安装openpyxl模块 补充(多个python版本) 二.使用介绍 ...

  2. python写表格_使用Python对Excel进行读写操作

    学习Python的过程中,我们会遇到Excel的读写问题.这时,我们可以使用xlwt模块将数据写入Excel表格中,使用xlrd模块从Excel中读取数据.下面我们介绍如何实现使用Python对Exc ...

  3. excel调用python编程-使用Python对Excel进行读写操作

    学习Python的过程中,我们会遇到Excel的读写问题.这时,我们可以使用xlwt模块将数据写入Excel表格中,使用xlrd模块从Excel中读取数据.下面我们介绍如何实现使用Python对Exc ...

  4. Python对Excel的常规操作 之 读取带密码的文件,解除Sheet密码

    Python对Excel的常规操作 之 读取带密码的文件,解除Sheet密码 一些废话 读取加密的Excel 解除文件中Sheet的密码 写在后面 一些废话 最近一直在给部门写一个参数校验的小程序.因 ...

  5. Python控制Excel表格的操作以及问题处理

    Python控制Excel表格(openpyxl) Python创建的sheet表并操作(因为新建表所以这里只有存值操作): ​ 1.引入: from openpyxl import Workbook ...

  6. 利用python对Excel进行读写操作

    最近在写论文做实验的过程中,利用python自带的matplotlib库进行绘画,但是尝尝会出现在程序跑完后发现图片里面有一些小细节没有注意到,导致整个代码重新跑.代码重新跑短则几小时,长则就不好说了 ...

  7. Python实现EXCEL的常规操作,一文涵盖10个方面!

    前言: EXCEL是日常办公最常用的软件,然而遇到数据量特别大(超过10W条)或者需要很复杂的公式时就显得没那么方便了(卡卡卡) ,所以还是那句话, "Life is short, you ...

  8. Python对Excel的常规操作 之 读取,写入(保留原格式写入)

    Python对Excel的常规操作 之 读取,写入(保留原格式) 前言 使用Python读写Excel常用的库有win32com和xlrd.xlwd.其中win32com可读可写,它对Excel的操作 ...

  9. Python对excel表格进行操作

    利用Python对Excel表格进行操作 对Excel表格进行操作首先需要下载好第三方库(Xlrd,Xlwt,xlutils,XlsxWriter) 对表格元素进行遍历操作 import xlrd # ...

  10. 利用python对excel文件进行操作_数据处理-对Excel文件读取和操作和存储(python版)...

    一:利用python读取Excel中.xls文件中所有数据 #encoding=utf-8 import xlrd import xlwt from xlwt import * fileName=&q ...

最新文章

  1. List-ArrayList 使用
  2. DynamicDataDisplay 实时曲线图的使用和沿轴移动的效果
  3. VMware 安装ubuntu 18.04遇到的问题
  4. 第4篇:Flowable快速工作流脚手架Jsite_启动项目
  5. JAVA:JDK目录结构和文件作用介绍
  6. Python入门--变量,浮点型,布尔型,字符串
  7. C# Readonly和Const的区别
  8. 将空闲空间合并到现有分区时出现错误: 检测到下列文件系统错误,分区容量未做调整, 无效的的文件记录
  9. Eclipse下配置Tomcat内存
  10. applyTo、renderTo 区别
  11. 反汇编linux内核,如何反汇编linux固件内核
  12. Android神器Xposed框架
  13. 5分钟了解英文SEO做外链的正确姿势
  14. windows主机和ubuntu互传文件的4种方法
  15. 推荐一款好用的GIF录屏软件(ScreenToGif)
  16. obj文件格式与mtl文件格式
  17. 视频编辑器GoPro Quik for mac中文版
  18. Office 2010注册机
  19. 35之后程序员何去何从
  20. python分支结构——if语句

热门文章

  1. hihoCoder #1117 战争年代
  2. android中一个应用程序启动另外一个应用程序,并传递数据。
  3. windbg+vm双机调试 waiting to reconnect 无法连接问题,解决办法
  4. javascript 动态选中option
  5. 【转载】别了,摩托罗拉(十一):小高尔文“新政”
  6. 台式计算机最常用的IO总线,三总线结构的计算机总线系统由 (1) 组成。
  7. win7+VMware+Ubuntu16.04
  8. 共享库/动态库目录path
  9. windows环境下zookeeper做成服务并启动
  10. SSL Library Compare