Python Matplotlib颜色条在左侧/对面

Python Matplotlib颜色条在左侧/对面,python,matplotlib,colorbar,Python,Matplotlib,Colorbar,可以生成这样的垂直色条(简化): 导致类似的结果(由于空间原因而旋转): 可以在另一侧获得刻度标签吗?您可以使用c\u ax.yaxis.set\u ticks\u 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,o

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

导致类似的结果(由于空间原因而旋转):


可以在另一侧获得刻度标签吗?

您可以使用
c\u ax.yaxis.set\u ticks\u 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')

注意:您也可以以类似的方式移动colorbar标签:

c_ax.yaxis.set_label_position('left')
最后,如果您有一个水平色条,并且希望将刻度和标签移动到顶部,您可以使用
xaxis
上的等效功能:

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

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

fig = plt.figure()
ax = plt.subplot(1, 1, 1)
im = ax.imshow(data)
在本例中,可以使用inset_轴定义颜色条的轴:

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()

我不知道为什么,但这些命令对我都不起作用。如果这也是您的情况,我通过指定colorbar属性解决了这个问题

location='left'
它同时处理刻度和标签。如果您仍然希望颜色条位于绘图的右侧,只需定义一个限制在所需位置的新轴,并将颜色条链接到该轴

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

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

但是,从colorbar对象抓取轴,然后应用更改,效果很好:

cb.ax.xaxis.set\u ticks\u位置(“顶部”)
cbar_ax=fig.add_axes([x0, y0, width, height])