300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > python绘制复杂表格_Matplotlib绘制表格

python绘制复杂表格_Matplotlib绘制表格

时间:2023-05-10 07:29:32

相关推荐

python绘制复杂表格_Matplotlib绘制表格

emememem......

今天有个需求,需要读取两个csv文件然后依据数据的差异动态绘制出表格,然后搜了一圈利用Python的攻略,发现都无甚用,还是最终回到了Matplotlib的怀抱,发现网上讲解利用Matplotlib绘制表格的博文太少(PS:浪费了我很多时间),于是以本文记之。Pandas 中文手册​Matplotlib 中文手册​.cn

Python 可以利用Pandas来读取csv格式的文件,建议标准化csv文件(第一行为表头,或者省略表头),Pandas可以自动识别出数据的格式:obj(string),float,int

import pandas as pd

csv_cur = pd.read_csv(csv_cur_path,header=0) # 可以手动指定表头行

2. 设置图表的尺寸和分辨率,figsize长宽大小,dpi像素分辨率

plt.figure(figsize=(16, 8), dpi=100)

3. 设置表格的行总数,framedata通过iloc来索引每一个元素

row_len = len(csv_cur.iloc[:, 0])

4. 设置表头,framedata通过columns来获得表头行

col_list = list(csv_cur.columns)

5. 表格具体内容需要通过cellText来设置,每一个选项都是list[],表格从左上角开始定义(0,0,),包括表头,因此当设置colLabels时,表格内容设置需要避免覆盖第1行

# 表格的内容从第一行

for i in np.arange(row_len + 1):

for j in np.arange(col_len):

if i == 0:

the_table[i, j].get_text().set_fontsize(font_size)

the_table[i, j].get_text().set_color((0, 0, 0))

else:

the_table[i, j].get_text().set_fontsize(font_size)

the_table[i, j].get_text().set_color(table_colors[i - 1][j])

the_table = plt.table(cellText=table_vals,

cellLoc='center',

colWidths=col_widths,

colLabels=col_labels,

loc='center')

6. 由于表格内容和字体需要手动定义,因此需要手动指定表的列宽

col_len = len(col_list)

col_width = 0.65 / col_len

col_widths = [col_width * 1.3]

for i in np.arange(col_len - 1):

if csv_diff.iloc[0, i + 1] == 0:

col_widths.append(col_width * 0.7)

else:

col_widths.append(col_width)

7. 关掉图表的坐标轴并保存图片

plt.axis('off')

result = "visualize_slam_result_table.png"

plt.savefig(result)

plt.show()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。