Nếu bạn có pdflatex và ImageMagick cài đặt, bạn có thể xuất DataFrame để tex, sử dụng pdflatex để chuyển đổi nó vào một tập tin pdf, và sau đó chuyển đổi pdf để png sử dụng ImageMagick:
import pandas as pd
import numpy as np
import subprocess
df = pd.DataFrame({'d': [1., 1., 1., 2., 2., 2.],
'c': np.tile(['a', 'b', 'c'], 2),
'v': np.arange(1., 7.)})
filename = 'out.tex'
pdffile = 'out.pdf'
outname = 'out.png'
template = r'''\documentclass[preview]{{standalone}}
\usepackage{{booktabs}}
\begin{{document}}
{}
\end{{document}}
'''
with open(filename, 'wb') as f:
f.write(template.format(df.to_latex()))
subprocess.call(['pdflatex', filename])
subprocess.call(['convert', '-density', '300', pdffile, '-quality', '90', outname])
Nếu bạn cài đặt phantomjs và ImageMagick, bạn có thể xuất DataFrame sang HTML và sau đó sử dụng phantomjs để chuyển đổi HTML sang png, và ImageMagick để cắt kết quả:
import pandas as pd
import numpy as np
import subprocess
df = pd.DataFrame({'d': [1., 1., 1., 2., 2., 2.],
'c': np.tile(['a', 'b', 'c'], 2),
'v': np.arange(1., 7.)})
filename = '/tmp/out.html'
outname = '/tmp/out.png'
cropname = '/tmp/cropped.png'
with open(filename, 'wb') as f:
f.write(df.to_html())
rasterize = '/path/to/phantomjs/examples/rasterize.js'
subprocess.call(['phantomjs', rasterize, filename, outname])
subprocess.call(['convert', outname, '-trim', cropname])
Tại sao bạn không chỉ bao gồm bảng của bạn từ Excel trong bài thuyết trình Powerpoint của bạn, mà không cần tạo bất kỳ hình ảnh nào? –
Tôi sẽ tránh sử dụng Excel hoàn toàn, tức là python => Powerpoint – user2370852
Tôi không biết điều kiện tiên quyết chính xác của bạn là gì, nhưng có lẽ bạn nên suy nghĩ lại điều đó. Hiển thị dữ liệu dưới dạng hình ảnh không phải là ý tưởng hay nhất vì bạn không thể thay đổi diện mạo và kích thước sau đó, sao chép từ đó, phông chữ sẽ bị rasterized và phải mất nhiều dung lượng hơn. –