我想通過使用Python生成比較表like this。如何在Python中創建比較表
alt text http://img714.imageshack.us/img714/5677/22862352.png
你可以提出任何圖書館這樣做呢?
我想通過使用Python生成比較表like this。如何在Python中創建比較表
alt text http://img714.imageshack.us/img714/5677/22862352.png
你可以提出任何圖書館這樣做呢?
這絕對是TeX的輸出。學習足夠的TeX(or, better yet, LaTeX)需要60分鐘才能吐出類似的表格。
很抱歉的混亂 - 但我想要創建看起來像這張表的PNG文件(或任何形式的圖像格式)。我正在用Python編寫一個項目,我想用Python創建不同結果的比較表。我不知道如何繪製像桌子一樣的東西。 – Lyyli
一種方法是輸出用於生成該表的LaTeX命令,然後在輸出上調用LaTeX以生成表。不過,這可能是過度殺傷力。 – McPherrinM
是的。如果您使用LaTeX,請按照我鏈接到的頁面上的說明進行操作,您將獲得與您顯示的圖像相同的結果。 LaTeX是一個帶有文本輸入的排版系統。你的程序會吐出LaTeX源代碼,然後在該源代碼上運行LaTeX,生成如上圖所示的表格。 –
Reportlab擁有一些用於創建和格式化表格的強大工具。從您的角度來看,唯一的缺點是它輸出爲PDF,所以您需要一箇中間步驟將輸出轉換爲PNG。查看Reportlab User Guide以獲取有關Reportlab表的更多信息。
下面是一些代碼,我掀起了這將創造非常相似,你的榜樣形象的東西:
from reportlab.pdfgen.canvas import Canvas
from reportlab.platypus import Frame, Table
from reportlab.lib.units import mm
from reportlab.lib.colors import black
canvas = Canvas("table_test.pdf")
frame = Frame(10*mm, 10*mm, 190*mm, 280*mm)
# Some mock data for the table. The data must be supplied as a list of lists:
table_data = [['Datasets', 'COL1', 'COL2', 'COL3', 'COL4', 'COL5'],
['ROW0',
u'6.43 \xb1 4.72',
u'6.16 \xb1 3.83',
u'2.79 \xb1 5.43',
u'19.08 \xb1 1.12',
u'1.76 \xb1 4.88'],
['ROW1',
u'1.09 \xb1 2.42',
u'11.51 \xb1 1.29',
u'10.14 \xb1 0.76',
u'10.09 \xb1 0.63',
u'27.16 \xb1 3.88'],
['ROW2',
u'0.88 \xb1 5.83',
u'23.13 \xb1 4.54',
u'8.96 \xb1 4.94',
u'4.30 \xb1 0.30',
u'13.20 \xb1 1.31'],
['ROW3',
u'22.87 \xb1 2.22',
u'8.56 \xb1 0.91',
u'6.36 \xb1 1.69',
u'4.30 \xb1 4.74',
u'12.39 \xb1 3.49'],
['ROW4',
u'14.35 \xb1 5.04',
u'15.29 \xb1 2.17',
u'8.39 \xb1 3.05',
u'11.38 \xb1 3.02',
u'10.21 \xb1 4.23']]
table_style = [("BOX", (0, 0), (-1, -1), 0.5, black), # box around table
("LINEBELOW", (0, 0), (-1, 0), 0.5, black), # line under header
("LINEAFTER", (0, 0), (0, -1), 0.5, black), # vertical line
("LINEAFTER", (1, 0), (1, -1), 0.5, black), # vertical line
("LINEAFTER", (2, 0), (2, -1), 0.5, black), # vertical line
("LINEAFTER", (3, 0), (3, -1), 0.5, black), # vertical line
("LINEAFTER", (4, 0), (4, -1), 0.5, black), # vertical line
]
table = Table(table_data, style=table_style)
frame.add(table, canvas)
canvas.save()
[ReportLab的(http://www.reportlab.com) –