matplotlib从颜色条中删除刻度(轴)

yhqotfr8  于 2023-01-13  发布在  其他
关注(0)|答案(2)|浏览(187)

我想删除颜色条右边带有数字的(ticks)轴。我在python中使用matplotlib如下:

f = plt.figure()
ax = f.add_subplot(1,1,1)
i = ax.imshow(mat, cmap= 'gray')
cbar = f.colorbar(i)

5gfr0r5j

5gfr0r5j1#

如果只想移除刻度但保留刻度标签,则可以将刻度的大小设置为0,如下所示

f = plt.figure()
ax = f.add_subplot(1,1,1)
mat = np.arange(100).reshape((10, 10))
i = ax.imshow(mat, cmap= 'viridis')
cbar = f.colorbar(i)
cbar.ax.tick_params(size=0)

如果您想同时删除刻度和标签,可以使用set_ticks([]),传递一个空列表。

cbar.set_ticks([])

8qgya5xd

8qgya5xd2#

另一种选择是提供一个格式化程序或定位器。这里有两种组合:

  • 将任何值设置为空字符串(“”)的格式化程序
  • 一个不会打勾的定位器。

有关更多格式化程序或定位程序,请参见official matplotlib docs

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker
from mpl_toolkits.axes_grid1 import make_axes_locatable

fig, ax = plt.subplots(ncols=1)

mat = np.arange(100).reshape((10, 10))
cs = ax.imshow(mat, cmap= 'viridis')

divider = make_axes_locatable(ax)
dvider_kwargs = dict(position="right", size="15%", pad=0.5)
fig.colorbar(cs,
             cax=divider.append_axes(**dvider_kwargs),
             format = matplotlib.ticker.FuncFormatter(lambda x, pos: ''),
             ticks = matplotlib.ticker.FixedLocator([]))

fig.colorbar(cs, 
             cax=divider.append_axes(**dvider_kwargs),
             format = matplotlib.ticker.FuncFormatter(lambda x, pos: ''))

fig.colorbar(cs, 
             cax=divider.append_axes(**dvider_kwargs))
             
plt.tight_layout()

对于make_axes_locatablecax=divider.append_axes,颜色条的大小都相同。

相关问题