Matplotlib颜色条在左侧/对侧刻度

时间:2016-04-29 13:01:11

标签: python matplotlib colorbar

可以像这样生成垂直颜色条(简化):

import matplotlib.pyplot as plt
import matplotlib as mpl

plt.figure()
c_ax=plt.subplot(111)
cb = mpl.colorbar.ColorbarBase(c_ax,orientation='vertical')
plt.savefig('my_colorbar.png')

导致类似这样的事情(因空间原因而轮换):enter image description here

是否可以在对面获得刻度标签?

4 个答案:

答案 0 :(得分:22)

您可以使用c_ax.yaxis.set_ticks_position()

切换刻度线的位置

所以对你的例子来说:

import matplotlib.pyplot as plt
import matplotlib as mpl

plt.viridis()

fig=plt.figure()
c_ax=plt.subplot(199)

cb = mpl.colorbar.ColorbarBase(c_ax,orientation='vertical')

c_ax.yaxis.set_ticks_position('left')

plt.savefig('my_colorbar.png')

enter image description here

请注意,您也可以以类似的方式移动彩条标签:

c_ax.yaxis.set_label_position('left')

最后,如果您有一个水平颜色条,并且想要将标记和标签移到顶部,您可以使用xaxis上的等效函数:

c_ax.xaxis.set_label_position('top')
c_ax.xaxis.set_ticks_position('top')

答案 1 :(得分:1)

我不知道为什么,但是这些命令都不适合我。如果您也是这种情况,我可以通过指定colorbar属性

解决问题
location='left'

会同时处理刻度线和标签。如果您仍然希望颜色条位于图的右侧,只需定义一个新轴以限制在所需位置,然后将颜色条链接到该轴即可。

cbar_ax=fig.add_axes([x0, y0, width, height])

答案 2 :(得分:0)

我遇到了同样的问题。当您显式设置颜色栏的轴时,可能会出现这种情况。在这种情况下,您可以轻松指定在这些轴的哪一侧获得刻度线和标签。例如,如果您使用imshow创建了图像

fig = plt.figure()
ax = plt.subplot(1, 1, 1)
im = ax.imshow(data)

您可以定义颜色条的轴,在此示例中,使用inset_axes:

from mpl_toolkits.axes_grid1.inset_locator import inset_axes
cbaxes = inset_axes(ax, width="7%", height="20%", loc=4)

然后添加您的颜色栏

cb = fig.colorbar(im, cax=cbaxes, ticks=[vmin, vmax], orientation='vertical')

然后控制刻度线的位置,等等...

cbaxes.yaxis.tick_left()

答案 3 :(得分:0)

由于某些原因,对颜色条输入轴(cax参数)进行更改对我不起作用。

但是,从颜色条对象中获取轴,然后应用更改效果很好:

cb.ax.xaxis.set_ticks_position("top")