用 Python 自動化操作 PPT,看完這篇文章就夠了!
作者:超級大洋蔥 806
https://tangxing.blog.csdn.net/article/details/109568830
1.PPT 自動化能幹什麼?有什麼優勢?
-
它可以代替你自動製作 PPT
-
它可以減少你調整用於調整 PPT 格式的時間
-
它可以讓數據報告風格一致
-
總之就是:它能提高你的工作效率!讓你有更多時間去做其他事情!
- 使用 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 進行復制沒有找到合適的方法,有以下兩種解決辦法:
-
使用 win32com 對 ppt 模板進行復制
-
增加模板 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(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_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(255, 0, 0) # 字體顏色 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(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 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(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.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(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.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(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
).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(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 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=(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)
效果如下:
將當前幻燈片頁面中的對象名稱和表格內容全部打印出來了,反之,我們對其進行復制,就是寫操作。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/azHw5o9DAAaGJapRBHtFRQ