在matplotlib中为colorbar添加白色背景

时间:2016-03-11 21:49:11

标签: python matplotlib

我想通过添加白色背景使我的色条更清晰可见。我需要图像中的颜色条,这使得有时难以阅读。

以下是没有白色背景的代码。

class="active"

3 个答案:

答案 0 :(得分:5)

以下是创建背景的解决方案:

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.axes_grid1.inset_locator import inset_axes

a=np.random.rand(10,10)

fig=plt.figure()
ax=fig.add_axes([0,0,1,1])
im=ax.imshow(a)

cbbox = inset_axes(ax, '15%', '90%', loc = 7)
[cbbox.spines[k].set_visible(False) for k in cbbox.spines]
cbbox.tick_params(axis='both', left='off', top='off', right='off', bottom='off', labelleft='off', labeltop='off', labelright='off', labelbottom='off')
cbbox.set_facecolor([1,1,1,0.7])

cbaxes = inset_axes(cbbox, '30%', '95%', loc = 6)

cb=fig.colorbar(im,cax=cbaxes) #make colorbar

fig.show()

enter image description here

答案 1 :(得分:4)

public interface IA<M> where M<> : IB<> { M<T> Foo1<T>(T val); M<T> Foo2<T>(); } public interface IB<T> { T Bar(); } public interface IA1 : IA<IB1> {} public interface IB1<T> : IB<T> { void Bar1(); } public interface IA2 : IA<IB2> {} public interface IB2<T> : IB<T> { void Bar2(T val); } public void MyFunc() { IA1 myA1 = GetMyA1(); IB1<int> myB1Int = myA1.Foo1<int>(2); int myB1IntBar = myB1Int.Bar(); myB1Int.Bar1(); IB1<string> myB1String = myA1.Foo2<string>(); string myB1StringBar = myB1String.Bar(); IA2 myA2 = GetMyA2(); IB2<string> myB2 = myA2.Foo1<string>("Hello World"); string myB2StringBar = myB2.Bar(); myB2.Bar2("Value"); } patch,因此您需要将edge color设置为白色。 set_color不起作用的原因是因为它将两者的脸部和边缘颜色设置为白色。

colorbar

如果您希望 的标签为白色,则需要为这些标签设置滴答参数。

cb.outline.set_edgecolor('white')
cb.outline.set_linewidth(2)

enter image description here

答案 2 :(得分:0)

请注意,自@Hagne发布答案以来,API已更改为关闭刻度线。

您现在需要传递False,而不是off。由于API没抱怨-只是没用

,这吸引了我一段时间
cbbox.tick_params(
    axis = 'both',
    left = False,
    top = False,
    right = False,
    bottom = False,
    labelleft = False,
    labeltop = False,
    labelright = False,
    labelbottom = False
)