MWE:
import matplotlib.pyplot as pltimport numpy as npimport seaborn as snsfig = 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 npfrom scipy.ndimage import gaussian_filterimport seaborn as snsimport matplotlib as mplimport matplotlib.pyplot as pltsns.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()总结
以上是内存溢出为你收集整理的python – seaborn husl或hsl调色板不起作用:保持默认的黑白颜色全部内容,希望文章能够帮你解决python – seaborn husl或hsl调色板不起作用:保持默认的黑白颜色所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)