Python: matplotlib/pandas - 在子图中绘制数据框作为表格

5

我这里有一段非常简化的代码,是我正在为一个开源项目工作的ATE结果绘图功能而编写的,用于从STDF数据中绘制。

def plot_everything_from_one_test(test_data, data, num_of_sites, test_tuple):

    plt.figure()


    # Title for everything
    plt.suptitle("Test Information Goes Here")

    # Find the limits
    low_lim = get_plot_min(data, test_tuple, num_of_sites)
    hi_lim = get_plot_max(data, test_tuple, num_of_sites)

    ######        

    table = function_that_returns_a_dataframe()

    plt.subplot(121)

    # HOW WOULD I ACTUALLY PUT A DATAFRAME HERE

    ######

    # Plots the trendline
    plt.subplot(222)
    plot_full_test_trend(test_data, low_lim, hi_lim)
    plt.title("Trendline")

    # Plots the histogram
    plt.subplot(224)
    plot_full_test_hist(test_data, low_lim, hi_lim)
    plt.title("Histogram")

    plt.show()

基本上,我所要做的就是在子图区域(121)中呈现一个包含数组、数据帧或其他内容的简单表格。这个数据帧恰好有10列宽度和不确定的长度(数量级为~10S,但如果需要可以削减)。我看过一些资料,知道matplotlib有table()函数,但从我所看到的来看,它会创建一个新的图形(不需要),并且还试图在其上方强制渲染一个图表,即使我真的没有想要那个图表因为它真的没有用处。我看到这个问题可以被规避,但我不知道如何在保留子图的情况下处理它。也许我只是不明白matplotlib如何处理它们。
另一个问题是,当我设法呈现表格时,它们变得极慢,甚至需要一分钟才能呈现出一个10x30左右的数据框。而且,文本呈现得非常小,并且无法缩放。如果这听起来像一堆问题,我很抱歉,但我真的不知道该如何处理应该是一个简单的表格呈现。如果我真的需要,我可能会将其转换为字符串,并将其呈现为文本。提前感谢您!

“table” 不会创建新的图形,也不会强制将任何内容放在其上方。关于表格有很多问题。因此,如果您分享您遇到问题的代码,并明确说明为什么其他问题无法帮助您,请参见 [ask] 和 [mcve],这将是很好的。对于时间问题也是一样 - 如果没有看到您已经编写的代码,那么人们只能猜测为什么需要这么长时间。 - ImportanceOfBeingErnest
1个回答

9
您可以在子图中添加一个表格,而无需为其创建单独的图形。然后,您可以关闭该子图的轴,它将不会尝试呈现除该区域中的表格之外的任何内容。
您还提到,在子图中尝试呈现一个10x30的数据框时,您的代码运行缓慢。这可能是因为您实现表格的方式存在问题,因为以下代码可以在一秒内呈现:
import matplotlib.pyplot as plt
import pandas as pd

d = {'x{}'.format(i): range(30) for i in range(10)}

table = pd.DataFrame(d)

plt.figure()

# table
plt.subplot(121)

cell_text = []
for row in range(len(table)):
    cell_text.append(table.iloc[row])

plt.table(cellText=cell_text, colLabels=table.columns, loc='center')
plt.axis('off')

# plot
plt.subplot(222)
plt.plot(table['x1'],table['x2'])

# plot
plt.subplot(224)
plt.plot(table['x1'],table['x2'])

plt.show()

enter image description here


谢谢您的帮助!如果我的问题看起来太笼统了,对不起哈哈哈。我准备试着实现它,如果我成功了,我会告诉你的! - McNibbler
1
搞定了并渲染出了一些漂亮的PDF文件。非常感谢!!! - McNibbler
这对我很有效。谢谢。 - Carlos Corral Carreño

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接