seaborn husl或hsl调色板不工作:保留默认的黑白色

2024-05-14 18:17:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个圆形的颜色映射,并且遇到了描述使用seaborn导入husl系统的this answer。我试图复制这个例子演示的简单用法,但是我不能让我的图像以彩色显示。它总是以黑白显示(seaborn默认调色板)。我在ipython工作,但不是ipython笔记本。(有些seaborn函数只在ipython笔记本中工作——我需要一个不依赖于此的答案)特别是python2.7.3,ipython1.1.0。在

MWE:

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

fig = plt.figure()

im = np.random.random((100, 100))
with sns.color_palette("husl", 8):
    plt.imshow(im)

显示:

http://imgur.com/AC98hmp


Tags: import颜色系统asipythonnp笔记本plt
2条回答

另一个答案是(接近)正确的解决方案,但了解为什么会发生这种情况可能会有所帮助。sns.set_palette和在with语句中使用sns.color_palette控制matplotlib颜色循环,(mpl.rcParams["axes.color_cycle"]),它在使用plt.plot时用于设置绘图元素的样式。在

相反,imshow有一个默认的colormap,这两个对象都是不同的类型(一个是颜色列表,另一个是从标量变量到颜色的连续映射),并且具有不同的默认设置(mpl.rcParams["image.cmap"])。在

如@cphlewis所述,您可以使用sns.color_palette返回的颜色列表来创建colormap对象,但我不会这样做。您可以看到,如果在绘图中添加颜色条,原因如下:

import numpy as np
from scipy.ndimage import gaussian_filter
import seaborn as sns
import matplotlib as mpl
import matplotlib.pyplot as plt

sns.set_style("dark")

img = np.random.normal(size=(100, 100))
img = gaussian_filter(img, 3, 2)

cmap1 = mpl.colors.ListedColormap(sns.color_palette("husl"))

plt.figure()
plt.imshow(img, cmap=cmap1)
plt.colorbar()

enter image description here

这是你正在制作一个有6个唯一值的颜色图,这将导致你丢失数据中的大量高频信息。最好使用更多颜色;256是一个很好的数字:

^{pr2}$

enter image description here

您可能还想直接使用sns.husl_palette函数,这样就可以控制循环从何处开始,以及亮度和饱和度的级别:

cmap3 = mpl.colors.ListedColormap(sns.husl_palette(256, .33, .85, .6))

plt.figure()
plt.imshow(img, cmap=cmap3)
plt.colorbar()

enter image description here

seamap = mpl.colors.ListedColormap(sns.color_palette("husl"))

imshow(im,cmap=seamap)

enter image description here

这个关联的答案对我也适用;显然imshow没有上下文意识斧头图是。在

相关问题 更多 >

    热门问题