我需要一个圆形的颜色映射,并且遇到了描述使用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)
显示:
另一个答案是(接近)正确的解决方案,但了解为什么会发生这种情况可能会有所帮助。
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对象,但我不会这样做。您可以看到,如果在绘图中添加颜色条,原因如下:这是你正在制作一个有6个唯一值的颜色图,这将导致你丢失数据中的大量高频信息。最好使用更多颜色;256是一个很好的数字:
^{pr2}$您可能还想直接使用
sns.husl_palette
函数,这样就可以控制循环从何处开始,以及亮度和饱和度的级别:这个关联的答案对我也适用;显然imshow没有上下文意识斧头图是。在
相关问题 更多 >
编程相关推荐