Matplotlib table only

匿名 (未验证) 提交于 2019-12-03 02:15:02

问题:

Is it possible to draw only a table with matplotlib? If I uncomment the line

plt.bar(index, data[row], bar_width, bottom=y_offset, color=colors[row]) 

of this example code, the plot is still visible. I want to have a table on top of my (PyQt) window and underneath a plot (with some space in between).

Any help is very appreciated!

回答1:

If you just wanted to change the example and put the table at the top, then loc='top' in the table declaration is what you need,

the_table = ax.table(cellText=cell_text,                       rowLabels=rows,                       rowColours=colors,                       colLabels=columns,                       loc='top') 

Then adjusting the plot with,

plt.subplots_adjust(left=0.2, top=0.8) 

A more flexible option is to put the table in its own axis using subplots,

import numpy as np import matplotlib.pyplot as plt   fig, axs =plt.subplots(2,1) clust_data = np.random.random((10,3)) collabel=("col 1", "col 2", "col 3") axs[0].axis('tight') axs[0].axis('off') the_table = axs[0].table(cellText=clust_data,colLabels=collabel,loc='center')  axs[1].plot(clust_data[:,0],clust_data[:,1]) plt.show() 

which looks like this,

You are then free to adjust the locations of the axis as required.



回答2:

Not sure if this is already answered, but if you want only a table in a figure window, then you can hide the axes:

fig, ax = plt.subplots()  # Hide axes ax.xaxis.set_visible(False)  ax.yaxis.set_visible(False)  # Table from Ed Smith answer clust_data = np.random.random((10,3)) collabel=("col 1", "col 2", "col 3") ax.table(cellText=clust_data,colLabels=collabel,loc='center') 


回答3:

This is another option to write a pandas dataframe directly into a matplotlib table:

import numpy as np import pandas as pd import matplotlib.pyplot as plt  fig, ax = plt.subplots()  # hide axes fig.patch.set_visible(False) ax.axis('off') ax.axis('tight')  df = pd.DataFrame(np.random.randn(10, 4), columns=list('ABCD'))  ax.table(cellText=df.values, colLabels=df.columns, loc='center')  fig.tight_layout()  plt.show() 



文章来源: Matplotlib table only
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!