簡體   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