<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文來講講如何用Python生成表格圖片。
選一個合適庫
Python最大的優點就是第三方庫豐富,基本你要什麼功能,都能找到別人實現好的庫,幾行程式碼一呼叫就完事了。
Pytable
最先找到的是日本人開發的pytab庫,它是基於 matplotlib 來畫圖的,預設引數下生成的表格外觀一般般,而且顯示不了中文字元,字型也很小,效果不理想。
我一開始還抱著死磕的心態,把這個庫的原始碼下載下來魔改,改了字型和大小,生成的表格終於能看了,但排版還是會出各種奇奇怪怪的問題,比如文字溢位單元格之類的,心累……
Plotly:官網地址
後面找到了一個新的庫:plotly,
官網的介紹是:
專門為機器學習和資料科學設計的前端展示工具,單純拿來畫表格還算大材小用了~ 它是用網頁來渲染的,看例子效果還可以,我就換成這個plotly試試,嗯,真的可以,那就這個了。
本文會分別介紹這兩個庫的使用,包括我魔改了pytab的地方。
(不過還是推薦plotly,網頁渲染就是好)
首先安裝
pip install pytab
然後我把畫表格的程式碼封裝成一個函數
import uuid from typing import List, Dict, Optional, Tuple import pytab def draw_table(data: Dict[str, list]): """ 畫表格 :param data: 資料格式 { 'a': [1.0, 2.1, 3.5, 4.0, 2.0, 1.0, 2.1, 3.5, 4.0, 2.0, ], 'b': [5.7, 6.1, 7.2, 8.3, 1.2, 5.7, 6.1, 7.2, 8.3, 1.2, ], } :return: """ # 設定字型,不然顯示不了中文 pytab.plt.rcParams["font.sans-serif"] = ["SimHei"] pytab.table( data=data, data_loc='center', # th_type='dark', th_c='#aaaaee', # 設定表頭背景顏色 td_c='gray', # 設定資料行背景顏色 table_type='striped', figsize=(len(data.keys()), int(len(data.values()) / len(data.keys()) + 1)), # fontsize=18, ) # pytab.show() temp_file = os.path.join(tempfile.gettempdir(), f'{uuid.uuid4().hex}.jpg') print(temp_file) pytab.save(temp_file) return temp_file
按照註釋的這個資料格式,a和b是表頭列名,後面的陣列是每一列的資料,很好理解
{ 'a': [1.0, 2.1, 3.5, 4.0, 2.0, 1.0, 2.1, 3.5, 4.0, 2.0, ], 'b': [5.7, 6.1, 7.2, 8.3, 1.2, 5.7, 6.1, 7.2, 8.3, 1.2, ], }
畫出來的表格是這樣的
再來試試中文顯示會怎麼樣
{ '列1': [1.0, 2.1, 3.5, 4.0, 2.0, 1.0, 2.1, 3.5, 4.0, 2.0, ], '列2': [5.7, 6.1, 7.2, 8.3, 1.2, 5.7, 6.1, 7.2, 8.3, 1.2, ], }
畫出來是這樣
有點醜吧,勉強能看
OK~ 關於pytab的就不多折騰了,畢竟上限就在這了
接下來看看plotly
首先安裝
pip install plotly
話不多說,老規矩,我又是寫成一個函數
import uuid from typing import List, Dict, Optional, Tuple import plotly.graph_objects as go import plotly.io as pio def draw_table(headers: List[str], cells: List[list]): """ 畫表 :param headers: header=dict(values=['A Scores', 'B Scores']) :param cells: cells=dict(values=[[100, 90, 80, 90], [95, 85, 75, 95]]) :return: """ pio.kaleido.scope.default_width = len(','.join(headers)) * 20 pio.kaleido.scope.default_height = 250 + len(cells[0]) * 20 fig = go.Figure(data=[go.Table(header=dict(values=headers), cells=dict(values=cells))]) # fig.show() image_file = os.path.join(tempfile.gettempdir(), f'{uuid.uuid4().hex}.jpg') print('write image to', image_file) fig.write_image(image_file) return image_file
這次的引數格式更前面的pytab不一樣,要傳兩個引數,都是陣列型別
第一個是表頭,第二個陣列是單元格
先來個例子試試
draw_table(['列A', '列B'], [[100, 90, 80, 90], [95, 85, 75, 95]])
然後把上面函數程式碼裡的 fig.show()
註釋去掉,可以看到生成的表格圖片效果
執行後可以發現自動開啟了瀏覽器,因為這個庫是使用網頁來渲染表格的,
效果如下:
效果比前面那個pytab好一些
到此這篇關於Python資料展示之生成表格圖片的文章就介紹到這了,更多相關Python生成表格圖片內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45