用Python自动化操作PPT,看完这篇文章就够了!

1.PPT自动化能干什么?有什么优势?

  • 它可以代替你自动制作PPT
  • 它可以减少你调整用于调整PPT格式的时间
  • 它可以让数据报告风格一致
  • 总之就是:它能提高你的工作效率!让你有更多时间去做其他事情!

2.使用win32com操作ppt

官方文档:https://docs.microsoft.com/zh-cn/office/vba/api/powerpoint.shape.copy

2.1 pip安装win32com

pip install pypiwin32

由于我已经安装过了,这里提示已经安装

图片

2.2 win32com复制ppt模板

有时候我们需要对ppt的模板进行复制,然后再添加相应内容,由于python-pptx对复制模板也没有很好的支持(我没找到~忧伤),所以我们用win32com对模板页进行复制,然后再用python-pptx增加ppt内容。

参考官方文档:https://docs.microsoft.com/zh-cn/office/vba/api/powerpoint.slide.copy

图片

先准备好一张模板: 2.2 win32 ppt测试.pptx

图片

示例代码:

import win32com
from win32com.client import Dispatch
import osppt = Dispatch('PowerPoint.Application')
# 或者使用下面的方法,使用启动独立的进程:
# ppt = DispatchEx('PowerPoint.Application')# 如果不声明以下属性,运行的时候会显示的打开word
ppt.Visible = 1  # 后台运行
ppt.DisplayAlerts = 0  # 不显示,不警告# 创建新的PowerPoint文档
# pptSel = ppt.Presentations.Add() 
# 打开一个已有的PowerPoint文档
pptSel = ppt.Presentations.Open(os.getcwd() + "\\" + "2.2 win32 ppt测试.pptx")# 复制模板页
pptSel.Slides(1).Copy()
#设置需要复制的模板页数
pageNums = 10
# 粘贴模板页
for i in range(pageNums):pptSel.Slides.Paste()# pptSel.Save()  # 保存
pptSel.SaveAs(os.getcwd() + "\\" + "win32_copy模板.pptx")  # 另存为
pptSel.Close()  # 关闭 PowerPoint 文档
ppt.Quit()  # 关闭 office

效果如下:

在这里插入图片描述

在这里插入图片描述

3.python-pptx 创建PPT、复制页面

官方文档:https://python-pptx.readthedocs.io/en/latest/

3.1 pip安装python-pptx

安装方法:

pip install python-pptx

我已经安装过了,故提示已经安装

在这里插入图片描述

3.2 python-pptx 复制页面

使用python-pptx进行复制没有找到合适的方法,有以下两种解决办法:

  1. 使用win32com对ppt模板进行复制
  2. 增加模板ppt数量,然后使用python-pptx对不需要的模板页进行删减操作

3.3 python-pptx 删除页面

python-pptx 多页待删除模板.pptx:

在这里插入图片描述

示例代码:

from pptx import Presentation# 删除某一页ppt
def del_slide(prs,index):slides = list(prs.slides._sldIdLst)prs.slides._sldIdLst.remove(slides[index])# 3.3 python-pptx 删除页面
def fun3_3():# 打开pptppt = Presentation('python-pptx 多页待删除模板.pptx')# 获取所有页slides = ppt.slidesnumber_pages = len(slides)print("删除前ppt一共",number_pages,"页面")# 设置需要删除的页面数量delPageNums = 3# 进行删除操作(每次都删除第一张ppt)for index in range(delPageNums):del_slide(ppt,0)# 再次获取所有页slides = ppt.slidesnumber_pages = len(slides)print("删除后ppt一共",number_pages,"页面")ppt.save('python-pptx 多页已删除模板.pptx')print('生成完毕')if __name__ == '__main__':fun3_3()

执行效果:

在这里插入图片描述

在这里插入图片描述

3.4 新建页面

示例代码:

from pptx import Presentation# 新建ppt
ppt = Presentation()# 新建页面
slide = ppt.slides.add_slide(ppt.slide_layouts[0])# 保存ppt
ppt.save('新建ppt.pptx')

效果如下:

在这里插入图片描述

在这里插入图片描述

4.python-pptx 插入文字、表格、形状并设置样式

模板ppt:

在这里插入图片描述

在这里插入图片描述

接下来,我们就在此模板上进行我们的操作演示

4.1 python-pptx 添加文字并设置样式

4.1.1 添加单行文字与多行文字

示例代码:

from pptx import Presentation
from pptx.util import Pt,Cm# 打开已存在ppt
ppt = Presentation('4. python-pptx操作模板.pptx')# 设置添加到当前ppt哪一页
n_page = 0
singleLineContent = "我是单行内容"
multiLineContent = \
"""我是多行内容1
我是多行内容2
我是多行内容3
"""# 获取需要添加文字的页面对象
slide = ppt.slides[n_page]# 添加单行内容# 设置添加文字框的位置以及大小
left, top, width, height = Cm(16.9), Cm(1), Cm(12), Cm(1.2)
# 添加文字段落
new_paragraph1 = slide.shapes.add_textbox(left=left, top=top, width=width, height=height).text_frame
# 设置段落内容
new_paragraph1.paragraphs[0].text = singleLineContent
# 设置文字大小
new_paragraph1.paragraphs[0].font.size = Pt(15)# 添加多行# 设置添加文字框的位置以及大小
left, top, width, height = Cm(16.9), Cm(3), Cm(12), Cm(3.6)
# 添加文字段落
new_paragraph2 = slide.shapes.add_textbox(left=left, top=top, width=width, height=height).text_frame
# 设置段落内容
new_paragraph2.paragraphs[0].text = multiLineContent
# 设置文字大小
new_paragraph2.paragraphs[0].font.size = Pt(15)# 保存ppt
ppt.save('4.1 添加文字.pptx')

效果如下:

在这里插入图片描述

4.1.2 设置文字框样式与文字样式

示例代码:

from pptx import Presentation
from pptx.util import Pt,Cm
from pptx.dml.color import RGBColor
from pptx.enum.text import MSO_VERTICAL_ANCHOR, PP_PARAGRAPH_ALIGNMENT
from pptx.enum.text import PP_ALIGN# 打开已存在ppt
ppt = Presentation('4. python-pptx操作模板.pptx')# 获取需要添加文字的页面对象
slide = ppt.slides[0]# 设置添加文字框的位置以及大小
left, top, width, height = Cm(16.9), Cm(1), Cm(12), Cm(1.2)
# 添加文字框 slide.shapes.add_textbox(距离左边,距离顶端,宽度,高度)
textBox = slide.shapes.add_textbox(left=left, top=top, width=width, height=height)# 调整文本框背景颜色
textBoxFill = textBox.fill
textBoxFill.solid()  # 纯色填充
textBoxFill.fore_color.rgb = RGBColor(187, 255, 255)# 文本框边框样式调整
line = textBox.line
line.color.rgb = RGBColor(0, 255, 0)
line.width = Cm(0.1)# 获取文本框对象
tf = textBox.text_frame# 文本框样式调整
tf.margin_bottom = Cm(0.1)  # 下边距
tf.margin_left = 0  # 左边距
tf.vertical_anchor = MSO_VERTICAL_ANCHOR.BOTTOM  # 对齐文本方式:底端对齐
tf.word_wrap = True  # 文本框的文字自动对齐# 设置内容
tf.paragraphs[0].text = '这是一段文本框里的文字'# 字体样式调整
tf.paragraphs[0].alignment = PP_ALIGN.CENTER  # 对齐方式
tf.paragraphs[0].font.name = '微软雅黑'  # 字体名称
tf.paragraphs[0].font.bold = True  # 是否加粗
tf.paragraphs[0].font.italic = True  # 是否斜体
tf.paragraphs[0].font.color.rgb = RGBColor(255, 0, 0)  # 字体颜色
tf.paragraphs[0].font.size = Pt(20)  # 字体大小# 保存ppt
ppt.save('4.1.2 设置文字框与字体样式.pptx')

效果如下:

在这里插入图片描述

代码详解

  • 添加文本框

    # 添加文字框 slide.shapes.add_textbox(距离左边,距离顶端,宽度,高度)
    textBox = slide.shapes.add_textbox(left=left, top=top, width=width, height=height)
    
  • 设置文本框背景

    # 调整文本框背景颜色
    textBoxFill = textBox.fill
    textBoxFill.solid()  # 纯色填充
    textBoxFill.fore_color.rgb = RGBColor(187, 255, 255)
    

    RGB颜色参考:http://www.wahart.com.hk/rgb.htm

  • 设置文本框边框样式

    # 文本框边框样式调整
    line = textBox.line
    line.color.rgb = RGBColor(0, 255, 0)
    line.width = Cm(0.1)
    
  • 设置文本框文字样式

    # 获取文本框文字对象
    tf = textBox.text_frame# 文本框样式调整
    tf.margin_bottom = Cm(0.1)  # 下边距
    tf.margin_left = 0  # 左边距
    tf.vertical_anchor = MSO_VERTICAL_ANCHOR.BOTTOM  # 垂直方式:底端对齐
    tf.word_wrap = True  # 文本框的文字自动对齐
    

    指定文本在文本框架中的垂直对齐方式。与TextFrame对象的.vertical_anchor属性一起使用。请注意,vertical_anchor属性也可以具有值None,表示没有直接指定的垂直锚设置,并且其有效值是从占位符继承的(如果有一个或从主题继承)。也可以不指定任何内容来删除明确指定的垂直锚设置。

    from pptx.enum.text import MSO_ANCHORcell = table.cell(row_idx=2, col_idx=3)
    cell.vertical_anchor = MSO_ANCHOR.BOTTOM
    

在这里插入图片描述

TOPAligns text to top of text frame and inherits its value from its layout placeholder or theme.
MIDDLECenters text vertically
BOTTOMAligns text to bottom of text frame
MIXEDReturn value only; indicates a combination of the other states.
    • 垂直对齐
  • 设置文本框内容

    # 设置内容
    tf.paragraphs[0].text = '这是一段文本框里的文字'
    
  • 字体样式调整

    # 字体样式调整
    tf.paragraphs[0].alignment = PP_ALIGN.CENTER  # 对齐方式
    tf.paragraphs[0].font.name = '微软雅黑'  # 字体名称
    tf.paragraphs[0].font.bold = True  # 是否加粗
    tf.paragraphs[0].font.italic = True  # 是否斜体
    tf.paragraphs[0].font.color.rgb = RGBColor(255, 0, 0)  # 字体颜色
    tf.paragraphs[0].font.size = Pt(20)  # 字体大小
    
    from pptx.enum.text import PP_ALIGNshape.paragraphs[0].alignment = PP_ALIGN.CENTER
    

在这里插入图片描述

    • 文字对齐
  CENTERCenter alignDISTRIBUTEEvenly distributes e.g. Japanese characters from left to right within a lineJUSTIFYJustified, i.e. each line both begins and ends at the margin with spacing between words adjusted such that the line exactly fills the width of the paragraph.JUSTIFY_LOWJustify using a small amount of space between words.LEFTLeft alignedRIGHTRight alignedTHAI_DISTRIBUTEThai distributedMIXEDReturn value only; indicates multiple paragraph alignments are present in a set of paragraphs.
  • 保存ppt
  # 保存pptppt.save('4.1.2 设置文字框与字体样式.pptx')

4.2 python-pptx 添加表格并设置样式

示例代码:

from pptx import Presentation
from pptx.util import Pt,Cm
from pptx.dml.color import RGBColor
from pptx.enum.text import MSO_ANCHOR
from pptx.enum.text import PP_ALIGN# 设置需要添加到哪一页
n_page = 0# 打开已存在ppt
ppt = Presentation('4. python-pptx操作模板.pptx')# 获取slide对象
slide = ppt.slides[n_page]# 设置表格位置和大小
left, top, width, height = Cm(6), Cm(12), Cm(13.6), Cm(5)
# 表格行列数,和大小
shape = slide.shapes.add_table(6, 7, left, top, width, height)
# 获取table对象
table = shape.table# 设置列宽
table.columns[0].width = Cm(3)
table.columns[1].width = Cm(2.3)
table.columns[2].width = Cm(2.3)
table.columns[3].width = Cm(1.3)
table.columns[4].width = Cm(1.3)
table.columns[5].width = Cm(1.3)
table.columns[6].width = Cm(2.1)# 设置行高
table.rows[0].height = Cm(1)# 合并首行
table.cell(0, 0).merge(table.cell(0, 6))# 填写标题
table.cell(1, 0).text = "时间"
table.cell(1, 1).text = "阶段"
table.cell(1, 2).text = "执行用例"
table.cell(1, 3).text = "新增问题"
table.cell(1, 4).text = "问题总数"
table.cell(1, 5).text = "遗留问题"
table.cell(1, 6).text = "遗留致命/" \"严重问题"# 填写变量内容
table.cell(0, 0).text = "产品1"
content_arr = [["4/30-5/14", "DVT1", "20", "12", "22", "25", "5"],["5/15-5/21", "DVT1", "25", "32", "42", "30", "8"],["5/22-6/28", "DVT1", "1", "27", "37", "56", "12"],["5/22-6/28", "DVT1", "1", "27", "37", "56", "12"]]# 修改表格样式
for rows in range(6):for cols in range(7):# Write column titlesif rows == 0:# 设置文字大小table.cell(rows, cols).text_frame.paragraphs[0].font.size = Pt(15)# 设置字体table.cell(rows, cols).text_frame.paragraphs[0].font.name = '微软雅黑'# 设置文字颜色table.cell(rows, cols).text_frame.paragraphs[0].font.color.rgb = RGBColor(255, 255, 255)# 设置文字左右对齐table.cell(rows, cols).text_frame.paragraphs[0].alignment = PP_ALIGN.CENTER# 设置文字上下对齐table.cell(rows, cols).vertical_anchor = MSO_ANCHOR.MIDDLE# 设置背景为填充table.cell(rows, cols).fill.solid()# 设置背景颜色table.cell(rows, cols).fill.fore_color.rgb = RGBColor(34, 134, 165)elif rows == 1:table.cell(rows, cols).text_frame.paragraphs[0].font.size = Pt(10)table.cell(rows, cols).text_frame.paragraphs[0].font.name = '微软雅黑'  # 字体名称table.cell(rows, cols).text_frame.paragraphs[0].font.color.rgb = RGBColor(0, 0, 0)table.cell(rows, cols).text_frame.paragraphs[0].alignment = PP_ALIGN.CENTERtable.cell(rows, cols).vertical_anchor = MSO_ANCHOR.MIDDLEtable.cell(rows, cols).fill.solid()table.cell(rows, cols).fill.fore_color.rgb = RGBColor(204, 217, 225)else:table.cell(rows, cols).text = content_arr[rows - 2][cols]table.cell(rows, cols).text_frame.paragraphs[0].font.size = Pt(10)table.cell(rows, cols).text_frame.paragraphs[0].font.name = '微软雅黑'  # 字体名称table.cell(rows, cols).text_frame.paragraphs[0].font.color.rgb = RGBColor(0, 0, 0)table.cell(rows, cols).text_frame.paragraphs[0].alignment = PP_ALIGN.CENTERtable.cell(rows, cols).vertical_anchor = MSO_ANCHOR.MIDDLEtable.cell(rows, cols).fill.solid()table.cell(rows, cols).fill.fore_color.rgb = RGBColor(204, 217, 225)ppt.save('4.2 python-pptx 添加表格并设置样式.pptx')

效果如下:

在这里插入图片描述

4.3 python-pptx 添加图表并设置样式

示例代码:

from pptx import Presentation
from pptx.util import Pt,Cm
from pptx.chart.data import ChartData
from pptx.enum.chart import XL_CHART_TYPE# 设置需要添加到哪一页
n_page = 0# 打开已存在ppt
ppt = Presentation('4. python-pptx操作模板.pptx')# 获取slide对象
slide = ppt.slides[n_page]# 初始化图表
chart_data = ChartData()# 填充需要添加的内容
content_arr = [["4/30-5/14", "DVT1", "20", "12", "22", "25", "5"],["5/15-5/21", "DVT1", "25", "32", "42", "30", "8"],["5/22-6/28", "DVT1", "1", "27", "37", "56", "12"],["5/22-6/28", "DVT1", "1", "27", "37", "56", "12"]]# 填充图表
chart_data.categories = [content_arr[0][0], content_arr[1][0], content_arr[2][0], content_arr[3][0]]
chart_data.add_series("问题总数", (content_arr[0][4], content_arr[1][4], content_arr[2][4], content_arr[3][4]))
chart_data.add_series("遗留问题总数", (content_arr[0][5], content_arr[1][5], content_arr[2][5], content_arr[3][5]))
chart_data.add_series("遗留致命严重\n问题总数", (content_arr[0][6], content_arr[1][6], content_arr[2][6], content_arr[3][6]))# 设置位置
left, top, width, height = Cm(6), Cm(10), Cm(16.1), Cm(7.5)
# 添加图表
chart = slide.shapes.add_chart(XL_CHART_TYPE.LINE, left, top, width, height, chart_data
).chartchart.has_legend = True
chart.legend.include_in_layout = False
# chart.series[0].smooth = True # 是否平滑
# chart.series[1].smooth = True
# chart.series[2].smooth = True
chart.font.size = Pt(10)  # 文字大小ppt.save('4.3 python-pptx 添加图表并设置样式.pptx')
print('折线图添加完成')

效果如下:

在这里插入图片描述

4.4 python-pptx 添加形状并设置样式

这里的形状可以是这些:

在这里插入图片描述

形状别名可以再这里查看:

在这里插入图片描述

并对应这里,找到正确的枚举名:

在这里插入图片描述

程序示例:

from pptx import Presentation
from pptx.util import Pt,Cm
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN
from pptx.enum.shapes import MSO_SHAPE# 设置需要添加到哪一页
n_page = 0# 打开已存在ppt
ppt = Presentation('4. python-pptx操作模板.pptx')# 获取slide对象
slide = ppt.slides[n_page]# 添加矩形
# 设置位置以及大小
left, top, width, height = Cm(2.5), Cm(4.5), Cm(30), Cm(0.5)
# 添加形状
rectangle = slide.shapes.add_shape(MSO_SHAPE.RECTANGLE, left, top, width, height)
# 设置背景填充
rectangle.fill.solid()
# 设置背景颜色
rectangle.fill.fore_color.rgb = RGBColor(34, 134, 165)
# 设置边框颜色
rectangle.line.color.rgb = RGBColor(34, 134, 165)# 添加正三角+文字(正常)
left, top, width, height = Cm(3), Cm(5.1), Cm(0.5), Cm(0.4)
slide.shapes.add_shape(MSO_SHAPE.FLOWCHART_EXTRACT, left, top, width, height)
new_paragraph = slide.shapes.add_textbox(left=left - Cm(0.95), top=top + Cm(0.4), width=Cm(2.4),height=Cm(1.1)).text_frame
content = """2020/01/05
内容1"""
new_paragraph.paragraphs[0].text = content
new_paragraph.paragraphs[0].font.size = Pt(10)  # 文字大小
new_paragraph.paragraphs[0].alignment = PP_ALIGN.CENTER# 添加正三角+文字(延期)
left, top, width, height = Cm(9), Cm(5.1), Cm(0.5), Cm(0.4)
extract = slide.shapes.add_shape(MSO_SHAPE.FLOWCHART_EXTRACT, left, top, width, height)
extract.fill.solid()
extract.fill.fore_color.rgb = RGBColor(255, 0, 0)
extract.line.color.rgb = RGBColor(255, 0, 0)new_paragraph = slide.shapes.add_textbox(left=left - Cm(0.95), top=top + Cm(0.4), width=Cm(2.4),height=Cm(1.1)).text_frame
content = """2020/01/05
内容2"""
new_paragraph.paragraphs[0].text = content  # 文字内容
new_paragraph.paragraphs[0].font.size = Pt(10)  # 文字大小
new_paragraph.paragraphs[0].font.color.rgb = RGBColor(255, 0, 0)    # 文字颜色
new_paragraph.paragraphs[0].alignment = PP_ALIGN.CENTER # 文字水平对齐方式# 添加倒三角+间隔条+文字
left, top, width, height = Cm(5), Cm(4), Cm(0.5), Cm(0.4)
slide.shapes.add_shape(MSO_SHAPE.FLOWCHART_MERGE, left, top, width, height)
gap = slide.shapes.add_shape(MSO_SHAPE.RECTANGLE, left + Cm(0.2), top + Cm(0.5), Cm(0.05), Cm(0.5))
gap.fill.solid()
gap.fill.fore_color.rgb = RGBColor(255, 255, 255)
gap.line.color.rgb = RGBColor(255, 255, 255)new_paragraph = slide.shapes.add_textbox(left=left - Cm(0.95), top=top - Cm(1), width=Cm(2.4),height=Cm(1.1)).text_frame
content = """2020/01/05
内容3"""
new_paragraph.paragraphs[0].text = content
new_paragraph.paragraphs[0].font.size = Pt(10)  # 文字大小
new_paragraph.paragraphs[0].alignment = PP_ALIGN.CENTER# 添加当前时间图形
left, top, width, height = Cm(7), Cm(4), Cm(0.5), Cm(0.4)
now = slide.shapes.add_shape(MSO_SHAPE.DOWN_ARROW, left, top, width, height)
now.fill.solid()
now.fill.fore_color.rgb = RGBColor(254, 152, 47)
now.line.color.rgb = RGBColor(254, 152, 47)ppt.save('4.4 python-pptx 添加形状并设置样式.pptx')
print('进度条添加完成')

效果如下:

在这里插入图片描述

5.seaborn绘图库介绍与使用

官方网址:http://seaborn.pydata.org/

在这里插入图片描述

  • seaborn是基于Matplotlib的Python数据可视化库。它提供了一个高级界面,用于绘制引人入胜且内容丰富的统计图形
  • 只是在Matplotlib上进行了更高级的API封装,从而使作图更加容易
  • seaborn是针对统计绘图的,能满足数据分析90%的绘图需求,需要复杂的自定义图形还需要使用到Matplotlib

5.1 pip安装seaborn

pip install seaborn

效果如下(我的显示已安装):

在这里插入图片描述

使用:

import seaborn as sns 
# 或者
import seaborn

使用数据集:

import seaborn as snstips = sns.load_dataset("tips")

无法连接:

在这里插入图片描述

在这里插入图片描述

下载数据集:

https://github.com/mwaskom/seaborn-data

放到本地:

在这里插入图片描述

运行程序:

import seaborn as snstips = sns.load_dataset("tips")print("tips:",tips)
print("ype(tips):",type(tips))

效果如下:
在这里插入图片描述

5.2 seaborn绘制折线图

5.2.1 通过relplot来实现

示例代码:

import matplotlib.pyplot as plt
import seaborn as sns# 数据集
data = sns.load_dataset("fmri")
print(data.head())
# 绘画折线图
sns.relplot(x="timepoint", y="signal", kind="line", data=data, ci=None)
# 显示
plt.show()

效果如下:

在这里插入图片描述

5.2.2 通过lineplot()函数来实现

示例代码:

import matplotlib.pyplot as plt
import seaborn as sns# 数据集
data = sns.load_dataset("fmri")
print(data.head())
# 绘画折线图:
sns.lineplot(x="timepoint", y="signal", data=data, ci=95)
# 显示
plt.show()

效果如下:

在这里插入图片描述

5.2.3 多坐标效果

示例代码:

import matplotlib.pyplot as plt
import seaborn as sns# 数据集
data = sns.load_dataset("fmri")
print(data.head())# 绘画折线图
f, axes = plt.subplots(nrows=1, ncols=2, figsize=(14, 6))sns.lineplot(x="timepoint", y="signal", data=data, ci=None, ax=axes[0])
sns.lineplot(x="timepoint", y="signal", hue="region", style="event", data=data, ci=None, ax=axes[1])
plt.show()

效果如下:

在这里插入图片描述

5.2.4 保存生成的图片

注意:需要在plt.show()之前调用savefig,不然保存的图片就是一片空白

plt.savefig('seaborn生成的图片.png')plt.show()

效果如下:

在这里插入图片描述

在这里插入图片描述

5.3 seaborn replot 绘制散点图

在这里插入图片描述

示例代码:

import matplotlib.pyplot as plt
import seaborn as sns# 准备数据:自带数据集
tips = sns.load_dataset("tips")
print(tips.head())# 绘画散点图
sns.relplot(x="total_bill", y="tip", data=tips, hue="sex", style="smoker", size="size")
sns.relplot(x="total_bill", y="tip", data=tips, hue="sex", style="smoker", size="size", sizes=(100, 100))
# 显示
plt.show()

效果如下:

在这里插入图片描述

5.4 seaborn barplot绘制柱状图

  • 垂直

示例代码:

import matplotlib.pyplot as plt
import seaborn as sns# 显示正负号与中文不显示问题
plt.rcParams['axes.unicode_minus'] = False
sns.set_style('darkgrid', {'font.sans-serif':['SimHei', 'Arial']})# 去除部分warning
import warnings
warnings.filterwarnings('ignore')plt.figure(dpi=150)
x = ['金融','农业','制造业','新能源']
y = [164, 86, 126, 53]
sns.barplot(x, y)plt.show()

效果如下:

在这里插入图片描述

  • 水平

调换横纵坐标位置即可

plt.figure(dpi=150)
x = ['金融','农业','制造业','新能源']
y = [164, 86, 126, 53]
sns.barplot(y,x )
plt.show()

在这里插入图片描述

6.python-pptx 插入图片

前提条件:

在这里插入图片描述

示例代码:

from pptx import Presentation
from pptx.util import Pt,Cm# 打开已存在ppt
ppt = Presentation('6.python-pptx操作模板.pptx')# 设置添加到当前ppt哪一页
n_page = 0# 获取需要添加文字的页面对象
slide = ppt.slides[n_page]# 设置待添加的图片
img_name  = 'seaborn生成的图片.png'
# 设置位置
left, top, width, height = Cm(6), Cm(6), Cm(20), Cm(9)
# 进行添加
slide.shapes.add_picture(image_file=img_name,left=left,top=top,width=width,height=height)# 保存ppt
ppt.save('6.python-pptx 插入图片.pptx')

效果如下:

在这里插入图片描述

在这里插入图片描述

7.python-pptx 读取数据

前提条件:

准备好一张有内容的ppt

在这里插入图片描述

示例代码:

from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE_TYPE# 打开待读取的ppt文件
ppt = Presentation('研发管理部检测部周报2020-09-17.pptx')# 获取第0张
slide0 = ppt.slides[0]# 遍历所有内容
for shape in slide0.shapes:# 打印shape名称print(shape.shape_type)# 判断是否为表格if shape.shape_type == MSO_SHAPE_TYPE.TABLE:#获取表格行for row in shape.table.rows:for cell in row.cells:print(cell.text_frame.text)

效果如下:

将当前幻灯片页面中的对象名称和表格内容全部打印出来了,反之,我们对其进行复制,就是写操作。

在这里插入图片描述

在这里插入图片描述

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取保证100%免费

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/826930.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【探索Linux】P.32(自定义协议)

阅读导航 引言一、自定义协议概念二、自定义协议需要注意的事项三、自定义协议示例(跨网络计算器协议)✅协议代码(Protocol.hpp)1. 计算器协议简单介绍2. 序列化部分3. 反序列化部分4. 请求和响应数据结构5. 使用自定义协议 四、总结温馨提示 引言 在上…

Rust Tracing 入门

Tracing 是一个强大的工具,开发人员可以使用它来了解代码的行为、识别性能瓶颈和调试问题。 Rust 是一种以其性能和安全保证而闻名的语言,在它的世界中,跟踪在确保应用程序平稳高效运行方面发挥着至关重要的作用。 在本文中探讨Tracing 的概…

C++ 初识模板

目录 0.前言 1.泛型编程 2.函数模板 2.1概念 2.2格式 2.3原理 2.4函数模板的实例化 2.4.1隐式实例化 2.4.2显式实例化 2.5模板参数的匹配原则 3.类模板 3.1类模板的定义格式 3.2类模板的实例化 4.结语 (图像由AI生成) 0.前言 在 C 中&a…

Unity3D 爆火的休闲益智游戏工程源码/3D资源 大合集

Unity3D休闲益智游戏工程源码大合集 一、关卡类游戏工程源码二、跑酷类游戏工程源码三、消除合成类游戏工程源码四、棋牌类游戏工程源码五、RPG(角色扮演)类游戏工程源码六、FPS(射击)类游戏工程源码十、Unity3D工艺仿真六、Unity游戏资源1、Unity3D 吃鸡…

Redis数据类型——String

Redis官网指令文档:Commands | Docs 前言 此处的String类型是针对Redis的Value的,因为Key的形式都是String,而Value则有哈性、列表、集合等形式。 众所周知,由于不同编码,经常会出现乱码的问题,但在Redi…

打造稳定安全的亚马逊测评环境:关键步骤与要点一览

亚马逊测评环境的搭建是一项既复杂又需要深入细致考虑的工作,它涉及多方面的技术配置和资源准备。以下是一些关键步骤和要点,帮助您更高效地构建测评环境。 一、资源筹备 1. 养号系统:选择稳定、高效的养号系统,确保能够模拟真实…

Linux系统-进程和计划任务管理

一.程序和进程 1.程序 保持在硬盘、光盘等介质中的可执行代码和数据文件中静态保存的代码 2.进程 在CPU及内存中运行的程序代码动态执行的代码父、子进程每个程序可以创建一个或多个进程 3.进程特征 动态性:进程是程序的一次执行过程,是临时的&…

决策树分类任务实战(python 代码详解)

目录 一、导入库、数据集、并划分训练集和测试集 二、参数调优 (一)第一种调参方法:for循环 (1)单参数优化 ①单参数优化(无K折交叉验证) ②单参数K折交叉验证 优化 (2)多参数优化 ①多参数优化(无K折交叉验证) 参数介绍: ②多参数K折交叉验证…

vulfocus靶场名称: apache-cve_2021_41773/apache-cve_2021_42013

Apache HTTP Server 2.4.49、2.4.50版本对路径规范化所做的更改中存在一个路径穿越漏洞,攻击者可利用该漏洞读取到Web目录外的其他文件,如系统配置文件、网站源码等,甚至在特定情况下,攻击者可构造恶意请求执行命令,控…

记录一下hive启动metestore服务时报错

【背景说明】 之前hadoop有问题,把hadoop和MySQL删了重装,hive没有动,然后启hive的metastore服务的时候,显示找不到metastore数据库 【报错】 Caused by: java.lang.reflect.InvocationTargetExceptionat sun.reflect.Generated…

【Java框架】SpringMVC(一)——基本的环境搭建及基本结构体系

目录 MVC模式视图(View)控制器(Controller)模型(Model)JSP Model1JSP Model2MVC的优点MVC的缺点 Spring MVC架构介绍特点 SpringMVC环境搭建(在前面Spring整合Mybatis的基础上)1.创建控制器Controller2.创建springmvc配置文件,并添加Controller的Bean3.web.xml中配置…

# 从浅入深 学习 SpringCloud 微服务架构(二)模拟微服务环境(1)

从浅入深 学习 SpringCloud 微服务架构(二)模拟微服务环境(1) 段子手168 1、打开 idea 创建父工程 创建 artifactId 名为 spring_cloud_demo 的 maven 工程。 --> idea --> File --> New --> Project --> Ma…

2024 CKA 最新 | 基础操作教程(十七)

题目内容 设置配置环境: [candidatenode-1] $ kubectl config use-context ek8s Task 将名为 node02 的 node 设置为不可用,并重新调度该 node 上所有运行的 pods。 考点相关内容分析 node 在 Kubernetes(K8s)中&#xff0c…

VASA-1:一键生成高质量视频,颠覆你的想象!

VASA-1:语音生成AI视频 前言 最近,微软公司公布了一项图生视频的 VASA-1 框架,该 AI 框架只需使用一张真人肖像照片和一段个人语音音频,就能够生成精确逼真的相对应文本的视频,而且可以使表情和面部动作表现的十分自然…

【数据结构】栈和队列(链表模拟队列)

学习本章节必须具备 单链表的前置知识, 建议提前学习:点击链接学习:单链表各种功能函数 细节 详解 本章节是学习用 单链表模拟队列 1. 单链表实现队列 思路如下 队列:只允许在一端进行插入数据操作,在另一端进行删除数…

线程互斥及基于线程锁的抢票程序

我们实现一个简单的多线程抢票程序。 #include<iostream> #include<thread> #include<unistd.h> #include<functional> #include<vector> using namespace std; template<class T> using func_tfunction<void(T)>;//返回值为void,…

XUbuntu18.04 源码编译Qt4.5.3的过程

由于新公司很多旧的软件都是基于这个版本做的嵌入式开发。 所以想要自己搭一套基于Linux的非嵌入式开发环境&#xff0c;方便用来调试和编译代码。 这样就可以完成在linux下开发&#xff0c;然后直接嵌入式打包&#xff0c;涉及到界面的部分就不需要上机调试看问题了。 所以…

Axure引用ECharts图表 解决火狐浏览器出错

Axure原型添加Echarts图表&#xff0c;没耐心看文章的可以直接下载示例 Axure中使用ECharts图表示例 1. 打开Axure新建页面 2. 页面添加元件 元件类型随意&#xff0c;矩形、动态面板、热区、图片 甚至段落都可以3. 命名元件 随意命名&#xff0c;单个页面用到多个图表时名…

机器学习-11-基于多模态特征融合的图像文本检索

总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍机器学习中图像文本检索技术。此技术把自然语言处理和图像处理进行了融合。 参考 2024年&#xff08;第12届&#xff09;“泰迪杯”数据挖掘挑战赛 图像特征提取&#xff08;VGG和Resnet特征提取卷积过程详解&…

Facebook账号运营要用什么IP?

众所周知&#xff0c;Facebook封号大多数情况都是因为IP的原因。Facebook对于用户账号有严格的IP要求和限制&#xff0c;以维护平台的稳定性和安全性。在这种背景下&#xff0c;海外IP代理成为了一种有效的解决方案&#xff0c;帮助用户避免检测&#xff0c;更加快捷安全地进行…