我在这里有一个(非常简化的)代码段,用于开源项目,我正致力于绘制STDF数据的ATE结果......
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列宽且无限长(在~10秒的数量级,但如果需要可以修剪)。我已经环顾四周了,我知道matplotlib有table(),但是我可以看到它创建了一个新的图形(不需要的),它也试图强制图形在它上面呈现,即使我真的不喜欢#39;我想拥有渲染,因为它真的没用。我看到这可能有点被规避,但我不知道如何管理它同时保留我的子图。也许我只是不了解matplotlib如何与他们合作。
另一个问题是,当我可以对要渲染的表进行排序时,它们是荒谬的慢速,达到一分钟以上渲染10x30的数据帧。此外,该文本提供荒谬的太小,不规模。很抱歉,如果这听起来像是一堆问题,但我真的不知道如何处理应该是一个简单的表格渲染。我可能只是转换为字符串,如果我真的需要并将其呈现为文本。提前谢谢!
答案 0 :(得分:1)
您可以将table
添加到子图中 - 您不需要单独的图形。然后你可以关闭该子图的轴,它不会尝试渲染除该区域中的表之外的任何东西
您还提到在尝试在子图中渲染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()