缩放 seaborn 热图 .png 输出文件

Scaling a seaborn heatmap .png output file

我有一个程序,简而言之,它连接到 Cisco 无线控制器并收集有关每个接入点的客户端数量的数据。它 运行 秒 'x' 间隔 'y' 间隔之间的时间。

程序运行良好。

注意 下面显示的两个输出文件都显示了 9 次传递,每次传递之间间隔 15 秒。您真正关心的是我有 9 列(每次通过一列),行是 AP 及其连接的客户端。

我的问题是:当我 运行 它针对小型客户端(93 个接入点)时,输出看起来完全符合我的要求:

但是当我 运行 它针对另一个客户端(1840 个接入点)时,输出如下所示:

这是我程序的相关部分:

df = pd.DataFrame(e, index=index, columns=cols)
df = df.transpose()

my_dpi = 96
sns.set(font_scale=2)
# plt.figure(figsize=(13, 91))
plt.figure(figsize=(2016 / my_dpi, 9120 / my_dpi), dpi=my_dpi)

sns.heatmap(df, cmap='RdYlGn_r', linewidths=0.5, annot=True, annot_kws={"size": 20})

plt.savefig('d:\python\projects\clients_per_ap\ac.png')
plt.show()

我尝试将 9120 更改为 912000,但我收到一条错误消息,指出该值必须小于 2^16。我试过 65535,但程序因内存错误而失败。我试过 54720 并且有效 -- 54720 产生了您在此处看到的作为第二张图像的输出,但它无法使用。

我如何将 1840 AP 客户端的输出文件缩放为看起来像 93 AP 客户端的输出文件?基本上我想要相同(或非常接近)的字体和宽度,只有 1840 行长而不是 93 行。

您尝试过以矢量格式输出文件吗? .PDF 通常效果很好。当然,放大时文本看起来会很大,但这可能是处理太大而无法放入内存的输出的最佳选择。然后,如果出于某种原因需要,您可以使用任何经典的 PDF 到 PNG 转换。