颜色条

阅读: 5214     评论:0

在Matplotlib中,颜色条是一个独立的坐标轴,可以指明图形中的颜色的含义。

我们在前面已经使用过颜色条,这里再专门介绍一下:

%matplotlib notebook
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,10,1000)
I = np.sin(x)* np.cos(x[:,np.newaxis])
I.shape

plt.imshow(I)
plt.colorbar()

img

我们得到了一个默认的蓝绿配色的图形。

实际上在plt.cm中有大量可选的颜色配置方案。具体使用哪种方案,要根据你的需求和你对美术的修养。一般情况下,你只需要关注三种类型的配色方案:

  • 顺序配色:由一组连续的颜色构成,比如binary和viridis
  • 互逆色:通常由互补的颜色构成,比如RdBu或者PuOr
  • 定性配色:随机顺序的一组颜色,比如rainbow或jet

这些配色方案的名字很多都是缩写组合,一定要注意字母大小写。

jet是Matplotlib2.0之前的默认配色方案,已经比较老旧了。viridis是目前的默认配色方案。下面我们看看'RdBu'的配色:

plt.imshow(I, cmap='RdBu')
plt.colorbar()

img

colorbar可以看作是plt.Axes的一个实例,因此前面关于坐标轴的格式配置技巧都可以使用,下面我们看一个噪点图像,注意其中的clim方法:

speckles = np.random.random(I.shape) < 0.01  # 制造bool噪点
I[speckles] = np.random.normal(0,3,np.count_nonzero(speckles)) # 生成噪点

plt.figure(figsize=(10,3.5)) 
plt.subplot(1,2,1)  # 多子图模式
plt.imshow(I, cmap='RdBu') 
plt.colorbar()

plt.subplot(1,2,2)
plt.imshow(I, cmap='RdBu')
plt.colorbar(extend='both') # 颜色条变成两端尖
plt.clim(-1,1)  # 限制颜色显示范围 

img

颜色条默认都是连续的,但有时候你可能也需要使用离散的颜色数据,最简单的方法就是使用plt.cm.get_cmap()方法,将适当的颜色方案和需要的区间数量作为参数传递进去即可:

plt.imshow(I, cmap=plt.cm.get_cmap('Blues',6))
plt.colorbar()
plt.clim(-1,1)

img


 配置图例 文本、箭头和注释 

评论总数: 0


点击登录后方可评论