【问题标题】:How to increase contrast in a 2D histogram by matplotlib如何通过 matplotlib 增加 2D 直方图中的对比度
【发布时间】:2019-08-30 07:18:24
【问题描述】:

我必须在几组数据上绘制二维直方图。我需要增加点之间的对比度,因为差异不是很明显。 鉴于每个数据集中的最大值不同,我必须找到一种自动的方式来进行归一化和增加强度(对比度)。

这是我在每个数据集上使用的代码:

H2, xedges, yedges, image = plt.hist2d(DF['x'], DF['y'], bins=(500, 500), cmap="hot", cbar = False, xticklabels = False, yticklabels = False, robust = True)

可能的解决方案是:

1- 将历史数除以数据集的最大值

2- 将数据集乘以强度因子(例如 1000)

3- 使用 seaborn.heatmap() 绘制新数据

这可以通过以下方式实现:

D2H, xedges, yedges = np.histogram2d(DF['x'], DF['y'], bins=(500, 500))
sns.heatmap(D2H/(D2H.max())*1000, cmap = "hot", cbar = False, xticklabels = False, yticklabels = False, robust = True)

你认为这是最好的方法吗?我期待任何更好、更简单的解决方案。谢谢。

【问题讨论】:

    标签: python matplotlib histogram


    【解决方案1】:

    乘以任意数字将改变distribution 的转换。我建议你 normalisehistogram 使用 vmin/vmax,可以在以下链接中找到 Normalisation

    所以vmin = D2H.min(), vmax = D2H.max()

    【讨论】:

    • 谢谢。我已经尝试过这种方法。这种方法的对比度很差。顺便说一句,乘法不会改变转换,因为它还除以数组的最大值(=标准化)。
    • 您可以使用您的colormap。如果您知道最小值-最大值,您可以将颜色设置为这些值。
    • 我假设是这个,但它必须是 hot colormap?
    • 正如我所说,我必须在几个数据集上绘图,我不想一一检查最大值和最小值是什么。它必须是自动化的。我发现“热”cmap 更好,但“inferno”和“magma”以及其他一些也不错。
    猜你喜欢
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 2019-07-07
    相关资源
    最近更新 更多