Python對於Excel的一些基本繪製圖示操作,讓你日常工作更加輕鬆
前言
在Python中,我們可以利用第三方庫來方便地操作Excel檔案。這裡使用python-excel.org中提供的openpyxl庫,用於讀寫Excel 2007及以上版本的Excel檔案。可以讓我們日常工作中對於Excel方面的處理更加的方便
本人對於Python學習建立了一個小小的學習圈子,為各位提供了一個平臺,大家一起來討論學習Python。歡迎各位到來Python學習群:960410445一起討論視訊分享學習。Python是未來的發展方向,正在挑戰我們的分析能力及對世界的認知方式,因此,我們與時俱進,迎接變化,並不斷的成長,掌握Python核心技術,才是掌握真正的價值所在。
安裝
使用pip安裝工具來安裝openpyxl,安裝需要開啟系統命令列(win +R)輸入CMD
pip install openpyxl
即可安裝。
初識操作程式碼
下面的程式碼用於建立Excel工作簿並在工作表中寫入資料:
執行程式碼實現效果:
垂直、水平和堆積條形圖
注意,下列設定影響不同的圖表型別:
- 通過設定type為col或bar在垂直和水平條形圖之間切換
- 當使用堆積圖時,overlap需要被設定成100
- 如果條形是水平的,那麼x和y軸相反
下面的程式碼用於建立不同型式的條形圖:
from openpyxl import Workbook from openpyxl.chart import BarChart, Series, Reference wb= Workbook(write_only=True) ws= wb.create_sheet() rows= [ ('Number','Batch 1', 'Batch2'), (2, 10, 30), (3, 40, 60), (4, 50, 70), (5, 20, 10), (6, 10, 40), (7, 50, 30), ] for row in rows: ws.append(row) chart1= BarChart() chart1.type= "col" chart1.style= 10 chart1.title= "Bar Chart" chart1.y_axis.title= 'Test number' chart1.x_axis.title= 'Sample length (mm)' data= Reference(ws, min_col=2, min_row=1, max_row=7, max_col=3) cats= Reference(ws, min_col=1, min_row=2, max_row=7) chart1.add_data(data,titles_from_data=True) chart1.set_categories(cats) chart1.shape= 4 ws.add_chart(chart1,"A10") from copy import deepcopy chart2= deepcopy(chart1) chart2.style= 11 chart2.type= "bar" chart2.title= "Horizontal Bar Chart" ws.add_chart(chart2,"G10") chart3= deepcopy(chart1) chart3.type= "col" chart3.style= 12 chart3.grouping= "stacked" chart3.overlap= 100 chart3.title= 'Stacked Chart' ws.add_chart(chart3,"A27") chart4= deepcopy(chart1) chart4.type= "bar" chart4.style= 13 chart4.grouping= "percentStacked" chart4.overlap= 100 chart4.title= 'Percent Stacked Chart' ws.add_chart(chart4,"G27") wb.save("bar.xlsx")
執行效果:
三維條形圖
也可以建立三維條形圖,程式碼如下:
from openpyxl import Workbook from openpyxl.chart import ( Reference, Series, BarChart3D, ) wb= Workbook() ws= wb.active rows= [ (None, 2013, 2014), ("Apples",5, 4), ("Oranges",6, 2), ("Pears",8, 3) ] for row in rows: ws.append(row) data= Reference(ws, min_col=2, min_row=1, max_col=3, max_row=4) titles= Reference(ws, min_col=1, min_row=2, max_row=4) chart= BarChart3D() chart.title= "3D Bar Chart" chart.add_data(data=data,titles_from_data=True) chart.set_categories(titles) ws.add_chart(chart,"A6") wb.save("bard.xlsx")
效果圖:
股價圖
不同形式股價圖的特定格式選項:
- 高-低-收盤形式股價圖實際上是一個不帶線條的折線圖,其標記設定為XYZ,並將hiLoLines設定為True。
- 開盤-高-低-收盤形式股價圖就像一個帶有標記的高-低-收盤股價圖,每個資料點設定為XYZ和upDownLines。
可以通過組合股價圖和條形圖來新增表示成交量的條形。
基本的程式碼如下:
from datetime import date from openpyxl import Workbook from openpyxl.chart import ( BarChart, StockChart, Reference, Series, ) from openpyxl.chart.axis import DateAxis,ChartLines from openpyxl.chart.updown_bars import UpDownBars wb= Workbook() ws= wb.active rows= [ ['日期','成交量','開盤','高','低','收盤'], ['2018-11-10',20000,26.20,27.20,23.49,25.45,], ['2018-11-11',10000,25.45,25.03,19.55,23.05,], ['2018-11-12',15000,23.05,24.46,20.03,22.42,], ['2018-11-13',2000,22.42,23.97,20.07,21.90,], ['2018-11-14',12000,21.9,23.65,19.50,21.51,], ] for row in rows: ws.append(row) # 高-低-收盤 c1= StockChart() labels= Reference(ws, min_col=1, min_row=2, max_row=6) data= Reference(ws, min_col=4, max_col=6, min_row=1, max_row=6) c1.add_data(data,titles_from_data=True) c1.set_categories(labels) for s in c1.series: s.graphicalProperties.line.noFill= True # 標記收盤 s.marker.symbol= "dot" s.marker.size= 5 c1.title= "高-低-收盤" c1.hiLowLines= ChartLines() from openpyxl.chart.data_source import NumData, NumVal pts= [NumVal(idx=i) for i in range(len(data)- 1)] cache= NumData(pt=pts) c1.series[-1].val.numRef.numCache=cache ws.add_chart(c1, "A10") # 開盤-高-低-收盤 c2= StockChart() data= Reference(ws, min_col=3, max_col=6, min_row=1, max_row=6) c2.add_data(data,titles_from_data=True) c2.set_categories(labels) for s in c2.series: s.graphicalProperties.line.noFill= True c2.hiLowLines= ChartLines() c2.upDownBars= UpDownBars() c2.title= "開盤-高-低-收盤" c2.series[-1].val.numRef.numCache= cache ws.add_chart(c2,"G10") # 建立條形圖代表成交量 bar= BarChart() data= Reference(ws, min_col=2, min_row=1, max_row=6) bar.add_data(data,titles_from_data=True) bar.set_categories(labels) from copy import deepcopy # 成交量-高-低-收盤價 b1= deepcopy(bar) c3= deepcopy(c1) c3.y_axis.majorGridlines=None c3.y_axis.title= "價格" b1.y_axis.axId= 20 b1.z_axis= c3.y_axis b1.y_axis.crosses= "max" b1+= c3 c3.title= "高低收盤成交量" ws.add_chart(b1,"A27") # 成交量-開盤-高-低-收盤 b2= deepcopy(bar) c4= deepcopy(c2) c4.y_axis.majorGridlines= None c4.y_axis.title= "價格" b2.y_axis.axId= 20 b2.z_axis= c4.y_axis b2.y_axis.crosses= "max" b2+= c4 ws.add_chart(b2,"G27") wb.save("stock.xlsx")
實現效果圖:
氣泡圖
氣泡圖與散點圖相似,但使用第三維來決定氣泡的大小,可以包括多個系列。
下面的程式碼建立氣泡圖:
from openpyxl import Workbook from openpyxl.chart import Series, Reference, BubbleChart wb= Workbook() ws= wb.active rows= [ ("Numberof Products", "Sales in USD","Market share"), (14, 12200, 15), (20, 60000, 33), (18, 24400, 10), (22, 32000, 42), (), (12, 8200, 18), (15, 50000, 30), (19, 22400, 15), (25, 25000, 50), ] for row in rows: ws.append(row) chart= BubbleChart() chart.style= 18 #使用預設的樣式 # 新增第一個資料系列 xvalues= Reference(ws, min_col=1, min_row=2, max_row=5) yvalues= Reference(ws, min_col=2, min_row=2, max_row=5) size= Reference(ws, min_col=3, min_row=2, max_row=5) series= Series(values=yvalues, xvalues=xvalues, zvalues=size, title="2013") chart.series.append(series) # 新增第二個資料系列 xvalues= Reference(ws, min_col=1, min_row=7, max_row=10) yvalues= Reference(ws, min_col=2, min_row=7, max_row=10) size= Reference(ws, min_col=3, min_row=7, max_row=10) series= Series(values=yvalues, xvalues=xvalues, zvalues=size, title="2014") chart.series.append(series) # 在以單元格A12開始的單元格中放置圖表 ws.add_chart(chart,"A12") wb.save("bubble.xlsx")
效果圖:
以上就是Python關於Excel的一些基本操作,當然了,Python對於Excel方面的操作肯定不止於此。未完待續.................
相關文章
- Python對excel的基本操作PythonExcel
- 怎麼簡單的繪製拓撲圖,用這個工具能讓你輕鬆實現
- 5 個讓你的開發更加輕鬆的輔助函式函式
- Diagramly:輕鬆在網頁上繪製流程圖網頁流程圖
- Word流程圖怎麼畫?如何輕鬆繪製流程圖流程圖
- Android Loader 機制,讓你的資料載入更加輕鬆Android
- 在Android上用AChartEngine輕鬆繪製圖表Android
- 如何用語雀畫板,輕鬆繪製架構圖?架構
- 專案管理基本流程介紹,讓你輕鬆管理專案專案管理
- Python 用 OpenCV 繪製基本圖形系列(總)PythonOpenCV
- 從線到面——繪製草圖輕鬆構建三維模型模型
- BI與SaaS碰撞,讓資料處理更加輕鬆(下)
- CSS 變數讓你輕鬆製作響應式網頁CSS變數網頁
- UpdatePlugin:輕鬆定製出屬於你自己的app更新神器PluginAPP
- Python基本圖形繪製--模組1:turtle庫的使用Python
- .net core下對於Excel的一些操作及使用Excel
- WPS演示教程:妙用自定義動畫輕鬆繪製城市輪廓圖動畫
- 流程圖繪製的操作過程流程圖
- 分享好用的小紅書圖片製作軟體,輕鬆製圖
- python用win32com對Excel的一些操作PythonWin32Excel
- Microsoft Excel 2019 - 讓你更輕鬆地管理和分析資料!ROSExcel
- Excel輕鬆入門Excel
- Red Hat套件讓你的EC更輕鬆(轉)套件
- 用傢俱ERP取代Excel,讓工作更輕鬆Excel
- [翻譯]CSS變數讓你輕鬆製作響應式網頁CSS變數網頁
- 辦公室革命,教你輕鬆搞定輕鬆玩轉ExcelExcel
- 如何讓你的Python程式碼更加pythonic ?Python
- 一文讓你輕鬆掌握 HTTPSHTTP
- 如何輕鬆記載家族資訊?MacFamilyTree百年家族譜,輕鬆繪製!Mac
- Affinity Designer繪製圖示的技巧分享
- [python] 基於PyWaffle庫繪製華夫餅圖Python
- Arduino :入門教學讓你輕鬆玩轉UI
- Python pyecharts繪製餅圖PythonEcharts
- 讓你輕鬆實現Mac與相機的連線Mac
- mac修改host檔案,讓你的mac輕鬆上googleMacGo
- Python例項:僅繪製圖例而不繪製實際的圖形Python
- 等值線圖的Python繪製方法Python
- [開源] 使用 Python 輕鬆操作已存在的表Python