【问题标题】:Custom Colormap自定义颜色图
【发布时间】:2019-03-08 15:05:33
【问题描述】:

我想用一个类似于这个的自定义颜色图来绘制一张热图,虽然不完全一样。

我想要一个这样的颜色图。在区间 [-0.6, 0.6] 中,颜色为浅灰色。高于 0.6,红色增强。在 -0.6 以下,另一种颜色(例如蓝色)会增强。

如何使用 python 和 matplotlib 创建这样的颜色图?

到目前为止我所拥有的: 在seaborn 中有一个命令seaborn.diverging_palette(220, 10, as_cmap=True),它会生成一个从蓝色-浅灰色-红色开始的颜色图。但是距离 [-0.6, 0.6] 仍然没有差距。

【问题讨论】:

  • 虽然色彩图的设计很容易,但不确定您问的是否真的是一个编程问题。可能这个问题在其他平台上更合适。请注意,设计色彩图非常困难,而且大多数设计都不是独一无二的,因此有些主观。

标签: python matplotlib seaborn colormap


【解决方案1】:

颜色图在 0..1 范围内标准化。因此,如果您的数据限制为 -1..1,则 -0.6 将标准化为 0.2,+0.6 将标准化为 0.8。

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.colors

norm = matplotlib.colors.Normalize(-1,1)
colors = [[norm(-1.0), "darkblue"],
          [norm(-0.6), "lightgrey"],
          [norm( 0.6), "lightgrey"],
          [norm( 1.0), "red"]]

cmap = matplotlib.colors.LinearSegmentedColormap.from_list("", colors)


fig, ax=plt.subplots()
x = np.arange(10)
y = np.linspace(-1,1,10)
sc = ax.scatter(x,y, c=y, norm=norm, cmap=cmap)
fig.colorbar(sc, orientation="horizontal")
plt.show()

【讨论】:

  • 谢谢,这正是我想要的:)
猜你喜欢
  • 2021-05-03
  • 2022-08-19
  • 2020-10-21
  • 2021-12-02
  • 2020-12-07
  • 2020-09-28
  • 2020-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多