python – seaborn husl或hsl调色板不起作用:保持默认的黑白颜
发布时间:2020-12-20 12:31:54 所属栏目:Python 来源:网络整理
导读:我需要一个圆形的颜色图,并遇到了 this answer,它描述了使用seaborn导入husl系统.我试图复制示例演示的简单用法,但我无法让我的图像显示颜色.它始终以黑白显示(seaborn默认调色板).我在ipython工作,但不在ipython笔记本中. (有些seaborn函数只能在ipython笔
我需要一个圆形的颜色图,并遇到了
this answer,它描述了使用seaborn导入husl系统.我试图复制示例演示的简单用法,但我无法让我的图像显示颜色.它始终以黑白显示(seaborn默认调色板).我在ipython工作,但不在ipython笔记本中. (有些seaborn函数只能在ipython笔记本中使用 – 我需要一个不依赖于它的答案.)特别是python 2.7.3,ipython 1.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 解决方法
另一个答案是(接近)正确的解决方案,但理解为什么会发生这种情况可能会有所帮助. 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() 这里只是制作一个包含6个唯一值的色彩图,这将导致您丢失数据中的大量高频信息.最好使用更多颜色; 256是一个很好的数字: cmap2 = mpl.colors.ListedColormap(sns.color_palette("husl",256)) plt.figure() plt.imshow(img,cmap=cmap2) plt.colorbar() 您可能还想直接使用sns.husl_palette函数,以便控制循环的开始位置以及亮度和饱和度的使用级别: cmap3 = mpl.colors.ListedColormap(sns.husl_palette(256,.33,.85,.6)) plt.figure() plt.imshow(img,cmap=cmap3) plt.colorbar() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |