【发布时间】:2018-04-01 01:31:45
【问题描述】:
我正在尝试绘制两个我修补过的 1000x1000 图像之间的差异。 MWE 如下(右上角和左下角是这些图像):
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import matplotlib.ticker as tck
import seaborn as sns
import numpy
sns.set(style='dark')
imagen2 = plt.figure(1, figsize=(5, 5))
imagen2.suptitle('StackOverflow Matplotlib colorbar demo')
dat = numpy.random.randn(1000, 1000)
top_left = plt.subplot(221)
top_left.imshow(dat)
top_right = plt.subplot(222, sharex=top_left, sharey=top_left)
top_right.imshow(dat)
bottom_left = plt.subplot(223, sharex=top_left, sharey=top_left)
bottom_left.imshow(dat)
bottom_right = plt.subplot(224, sharex=top_left, sharey=top_left)
# problem_plot = bottom_right.imshow(dat)
# plt.colorbar(problem_plot, fraction=0.045, pad=0.04)
problem_plot = sns.heatmap(dat)
problem_plot.xaxis.set_major_locator(tck.MultipleLocator(200))
problem_plot.xaxis.set_major_formatter(tck.ScalarFormatter())
problem_plot.yaxis.set_major_locator(tck.MultipleLocator(200))
problem_plot.yaxis.set_major_formatter(tck.ScalarFormatter())
plt.tight_layout(rect=(0, 0, 1, 0.95))
plt.show()
matplotlib 的imshow 很容易保存为 PDF(尽管颜色条存在一些对齐和大小问题)。
但是,seaborn 的 heatmap 以牺牲大量矢量的 PDF 为代价解决了这个问题:使用 ps2pdf14 -dPDFSETTINGS=/prepress 压缩后为 6.2MB 与 3.7MB。
有没有其他有效的方法来绘制这个同时保留 seaborn 的美学优势?
【问题讨论】:
-
我不清楚你喜欢右下角的什么情节。是彩条吗?旋转的 x 轴标签?
-
对我来说不清楚为什么你会突然只在最后一个子图上使用 seaborn 图?似乎如果您只使用与其他三个绘图相同的 imshow,则不会出现文件大小问题。所以这就是这里的解决方案,不是吗?
-
@OscarBenjamin - 如果我用
imshow绘制它,我必须手动对齐和调整颜色条的大小(参见示例中的注释行),它仍然不完美。 -
@ImportanceOfBeingErnest - 是的,我可以使用
imshow,但我想问问社区是否还有其他可能性。 -
是的,总是有“其他可能性”。但究竟是为了什么?
标签: python matplotlib seaborn