将pandas表(用字符串填充)保存为png

mcl*_*uka 1 python matplotlib python-2.7 python-3.x pandas

这是我的代码:

column1 = ['Measured Set', '1. set', '2. set', '3. set']
column2= ['Breached parameter (number of breaches, %)' ]
column3 = ['Breached parameter (number of breaches, %)']

for j in range(NOT):
    column2.append(report_str[0][j])
    column3.append(report_str[1][j])

data = {
    'Sensor': column1,
    'Sensor 1': column2,
    'Sensor 2': column3,
}

df = pd.DataFrame(data)
df
Run Code Online (Sandbox Code Playgroud)

report_str 是一个列表,填充了字符串,我将某些字符串复制到表中.

我尝试使用此代码保存表:

ax = df.plot()
fig = ax.get_figure()
fig.savefig('asdf.png')
Run Code Online (Sandbox Code Playgroud)

但是我得到一个错误:"空'DataFrame':没有要绘制的数字数据".

这是我要保存的输出表: 在此输入图像描述

任何人都可以帮我解决这个问题吗?

Ser*_*ity 5

首先,列列表的长度必须相同.您可以使用matplotlib绘制表格并table使用pandas函数.

import pandas as pd
import matplotlib.pylab as plt
from pandas.tools.plotting import table

# I add None value to align all lists
column1 = ['Measured Set', '1. set', '2. set', '3. set']
column2= ['Breached parameter (number of breaches, %)', None, None,None ]
column3 = ['Breached parameter (number of breaches, %)', None, None,None]

data = {
    'Sensor': column1,
    'Sensor 1': column2,
    'Sensor 2': column3,
}

df = pd.DataFrame(data)
print(df)

# set fig size
fig, ax = plt.subplots(figsize=(12, 3)) 
# no axes
ax.xaxis.set_visible(False)  
ax.yaxis.set_visible(False)  
# no frame
ax.set_frame_on(False)  
# plot table
tab = table(ax, df, loc='upper right')  
# set font manually
tab.auto_set_font_size(False)
tab.set_fontsize(8) 
# save the result
plt.savefig('table.png')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 谢谢,此代码确实有效,但即使文本较大,表格仍然很小,有没有办法增加行和列的大小? (3认同)