繁体   English   中英

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

[英]matplotlib remove the ticks (axis) from the colorbar

我想删除颜色栏右侧带有数字的(刻度)轴。 我使用 matplotlib 和 python 如下:

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

在此处输入图像描述

如果您只想删除刻度但保留刻度标签,则可以将刻度的大小设置为 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([])

在此处输入图像描述

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

  • 将任何值设置为空字符串 ('') 的格式化程序
  • 不放置刻度的定位器。

有关更多格式化程序或定位器,请参阅官方 matplotlib 文档

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具有相同的大小。

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM