我目前有一个python脚本,可以分析jstack转储并输出如下数据框:
我想将其转换为包含此数据的表的png或jpg图像。像这样简单的东西:
有人知道生成这种图像的最简单,最直接的方法是什么,以便将其保存在与我运行代码相同的路径中吗?
谢谢! 哈维尔
***编辑:
提供的解决方案正在输出一个不可读的表,其中大部分都是空白,如下所示:
有人可以建议我做错了什么,应该调整哪些参数?
***编辑#2:
这是我的代码:
df = pd.DataFrame(table_data, columns = ["Method Name", "# of threads", "% of threads"])
ax = plt.subplot(111, frame_on=False)
ax.xaxis.set_visible(False)
ax.yaxis.set_visible(False)
t = table(ax, df)
t.auto_set_font_size(False)
t.set_fontsize(12)
fig.savefig("test.png")
和当前输出:
***编辑#3:
这是我传递的数据框:
Method Name # of threads % of threads
0 at sun.nio.ch.EPollArrayWrapper.epollWait(Nati... 33 32.35
1 at sun.misc.Unsafe.park(Native Method) 29 28.43
2 NO JAVA STACK TRACE 18 17.64
3 at java.net.PlainSocketImpl.socketAccept(Nativ... 6 05.88
4 at xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx... 5 04.90
5 at java.lang.Object.wait(Native Method) 4 03.92
6 at java.lang.Thread.sleep(Native Method) 3 02.94
7 at java.net.SocketInputStream.socketRead0(Nati... 3 02.94
8 at sun.nio.ch.ServerSocketChannelImpl.accept0(... 1 00.98
答案 0 :(得分:3)
你可以试试吗?
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.axis('off')
ax.axis('tight')
t= ax.table(cellText=df.values, colWidths = [0.9]*len(df.columns), colLabels=df.columns, loc='center')
t.auto_set_font_size(False)
t.set_fontsize(8)
fig.tight_layout()
plt.show()
这是我得到的输出:您可以更改列宽的0.9以调整列宽的大小,如果字体太小则可以更改字体
您将使用此绘图熊猫表。
from pandas.plotting import table
table(df)
您可以使用以下代码隐藏所有轴和框架
ax = plt.subplot(111, frame_on=False)
ax.xaxis.set_visible(False)
ax.yaxis.set_visible(False)
table(ax, df)
您可以使用savefig保存表。
plt.savefig('table.png')