Matplotlib: 更改颜色渐变条的背景颜色(在使用透明颜色时)

6

背景:Matplotlib散点图。 在使用透明度(alpha<1)绘制散点图且轴的背景色不为白色时,对应颜色条中的颜色会呈现不同。如下所示的图像中清晰可见:右侧的颜色条看起来“过于亮”。但是,设置颜色条轴的背景颜色并不能改变这一点。

因此,问题来了:我该如何改变带有透明颜色的颜色条的背景颜色?

我正在使用Python 2.7.3和Matplotlib 1.3.1(在Ubuntu 12.04上)。

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(10) #for reproducability

n = 10
ticks = range(n)
data = np.hstack((np.random.rand(50,2),np.random.randint(0,n,(50,1))))
colors = plt.cm.get_cmap('jet',n)(ticks)
lcmap = plt.matplotlib.colors.ListedColormap(colors)

plt.figure(figsize=(8,4))
ax = plt.subplot(121)
plt.scatter(data[:,0],data[:,1], c=data[:,2], s=40, alpha=0.3, 
        edgecolor='none', cmap=lcmap)
plt.colorbar(ticks=ticks)
plt.clim(-0.5,9.5)

ax = plt.subplot(122)
plt.scatter(data[:,0],data[:,1], c=data[:,2], s=40, alpha=0.3, 
        edgecolor='none', cmap=lcmap)
cb = plt.colorbar(ticks=ticks)
ax.set_axis_bgcolor((0.2,0.2,0.2))
cb.ax.set_axis_bgcolor((0.2,0.2,0.2))
plt.clim(-0.5,9.5)

plt.show()

enter image description here

1个回答

5
在您的plt.clim调用之后加入这行代码。
cb.patch.set_facecolor((0.2, 0.2, 0.2, 1.0))

太棒了,这就解决了问题。不过我还不太确定为什么。 - hitzg
说实话,我也不太清楚为什么。显然,他们使用这个补丁来设置色条背景,而不是标准的轴背景。 - farenorth
好的,谢谢解释。有趣的是,将补丁完全透明(cb.patch.set_alpha(0))并没有改变任何东西... - hitzg
是的,我也注意到了。 @tcaswell可能会知道答案。 - farenorth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接