這款 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 os

ppt = 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():
    # 打開ppt
    ppt = Presentation('python-pptx 多頁待刪除模板.pptx')

    # 獲取所有頁
    slides = ppt.slides
    number_pages = len(slides)
    print("刪除前ppt一共",number_pages,"頁面")

    # 設置需要刪除的頁面數量
    delPageNums = 3
    # 進行刪除操作(每次都刪除第一張ppt)
    for index in range(delPageNums):
        del_slide(ppt,0)

    # 再次獲取所有頁
    slides = ppt.slides
    number_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(187255255)

# 文本框邊框樣式調整
line = textBox.line
line.color.rgb = RGBColor(02550)
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(25500)  # 字體顏色
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(187255255)

    RGB顏色參考:http://www.wahart.com.hk/rgb.htm

  • 設置文本框邊框樣式

    # 文本框邊框樣式調整
    line = textBox.line
    line.color.rgb = RGBColor(02550)
    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_ANCHOR

    cell = table.cell(row_idx=2, col_idx=3)
    cell.vertical_anchor = MSO_ANCHOR.BOTTOM
    TOP
    Aligns text to top of text frame and inherits its value from its layout placeholder or theme.
    MIDDLE
    Centers text vertically
    BOTTOM
    Aligns text to bottom of text frame
    MIXED
    Return 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(25500)  # 字體顏色
    tf.paragraphs[0].font.size = Pt(20)  # 字體大小
    from pptx.enum.text import PP_ALIGN

    shape.paragraphs[0].alignment = PP_ALIGN.CENTER
    • 文字對齊
  CENTER
Center align
DISTRIBUTE
Evenly distributes e.g. Japanese characters from left to right within a line
JUSTIFY
Justified, 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_LOW
Justify using a small amount of space between words.
LEFT
Left aligned
RIGHT
Right aligned
THAI_DISTRIBUTE
Thai distributed
MIXED
Return value only; indicates multiple paragraph alignments are present in a set of paragraphs.
  • 保存ppt
  # 保存ppt
  ppt.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(67, 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(00).merge(table.cell(06))

# 填寫標題
table.cell(10).text = "時間"
table.cell(11).text = "階段"
table.cell(12).text = "執行用例"
table.cell(13).text = "新增問題"
table.cell(14).text = "問題總數"
table.cell(15).text = "遺留問題"
table.cell(16).text = "遺留致命/" \
                        "嚴重問題"

# 填寫變量內容
table.cell(00).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 titles
        if 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(255255255)
            # 設置文字左右對齊
            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(34134165)
        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(000)
            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(204217225)
        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(000)
            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(204217225)

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
).chart


chart.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('折線圖添加完成')

效果如下:

其它圖表可參考:https://www.cnblogs.com/adam012019/p/11348938.html

4.4 python-pptx 添加形狀並設置樣式

這裏的形狀可以是這些:

形狀別名可以再這裏查看:

https://docs.microsoft.com/zh-cn/office/vba/api/Office.MsoAutoShapeType

並對應這裏,找到正確的枚舉名:

https://python-pptx.readthedocs.io/en/latest/api/enum/MsoAutoShapeType.html#msoautoshapetype

程序示例:

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(34134165)
# 設置邊框顏色
rectangle.line.color.rgb = RGBColor(34134165)

# 添加正三角+文字(正常)
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(25500)
extract.line.color.rgb = RGBColor(25500)

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(25500)    # 文字顏色
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(255255255)
gap.line.color.rgb = RGBColor(255255255)

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(25415247)
now.line.color.rgb = RGBColor(25415247)

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 sns

tips = sns.load_dataset("tips")

無法連接:

下載數據集:

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

放到本地:

運行程序:

import seaborn as sns

tips = sns.load_dataset("tips")

print("tips:",tips)
print("ype(tips):",type(tips))

效果如下:

參考博客:

《解決seaborn導入數據集出現錯誤》

https://blog.csdn.net/qq_33828738/article/details/107044082

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=(146))

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=(100100))
# 顯示
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 = [1648612653]
sns.barplot(x, y)

plt.show()

效果如下:

  • 水平

調換橫縱座標位置即可

plt.figure(dpi=150)
x = ['金融','農業','製造業','新能源']
y = [1648612653]
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)

效果如下:

將當前幻燈片頁面中的對象名稱和表格內容全部打印出來了,反之,我們對其進行復制,就是寫操作。


作者:超級大洋蔥806

https://tangxing.blog.csdn.net/article/details/109568830

- 合作、交流、轉載請添加微信 moonhmily1 -


請長按掃碼加小編,回覆關鍵詞:數據可視化

進羣一起學習交流吧
▲長按掃

-今日互動-


你get到了嗎?歡迎文章下方留言互動




如果感覺對你有幫助的話


            
            
            
來個「 轉發朋友圈 」和「 在看 」,一起見證你的努力和成長,是對我們最大的支持!





本文分享自微信公衆號 - DataScience(DataScienceTeam)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章