numpy 强制Seaborn热图将数组中的每个(x,y)值显示为单个像素

axr492tv  于 2023-03-23  发布在  其他
关注(0)|答案(1)|浏览(110)

我有一个大的图像,我试图与Seaborn. heatmap生成。
出现了两个问题,但这个问题是关于图像中出现的聚合像素的。我希望出现一个巨大的图像(3000 x100000像素)。我错过了什么?
顺便说一句,这是我的第一个python代码。我愿意接受所有的建议。谢谢!

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
sns.set_theme()

data = np.fromfunction(lambda i, j: (j + 1) % (i + 1), (3000, 100000), dtype=int)
sns.heatmap(data,cbar=False,square=True,xticklabels=False,yticklabels=False)
plt.savefig('3000x100000.png')

我期待一个非常非常大的png。它很小。而且它仍然有一个颜色条。

fzwojiic

fzwojiic1#

您可以通过考虑dpi来指定以英寸为单位的图形大小:

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
sns.set_theme()

fig_height_in_pix = 3000
fig_width_in_pix = 100000
dpi = 100

fig, ax = plt.subplots(figsize=(fig_width_in_pix/dpi, fig_width_in_pix/dpi), dpi=dpi)
data = np.fromfunction(lambda i, j: (j + 1) % (i + 1), (fig_height_in_pix, fig_width_in_pix), dtype=int)
sns.heatmap(data,cbar=False,square=True,xticklabels=False,yticklabels=False,ax=ax)
plt.savefig(f'{fig_height_in_pix}x{fig_width_in_pix}.png')

相关问题