我怎样才能删除matplotlib中颜色条的短线

how can i delete the short lines of the colorbar in matplotlib

我用 matplotlib 绘图,颜色栏中有短线:

我怎样才能删除短线以获得像这张照片这样的颜色条:

我的代码需要更改什么? 我的代码在这里:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from __future__ import unicode_literals
from matplotlib import rc
from matplotlib.colors import LogNorm
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
import matplotlib as cm

phi = open("file1.txt").read().splitlines()
psi = open("file2.txt").read().splitlines()

# normal distribution center at x=0 and y=5
x = np.array(phi).astype(np.float)
y = np.array(psi).astype(np.float)

plt.hist2d(x, y, bins=400, cmap='bone', norm=LogNorm())
plt.colorbar()
plt.title('Distribution')
plt.xlabel(r' Phi ($\phi$)', fontsize=15)
plt.ylabel(r'Psi ($\psi$)', fontsize=15)
plt.rc('xtick', labelsize=11)
plt.rc('ytick', labelsize=11)
plt.xlim((-180,180))
plt.ylim((-180,180))
plt.axhline(0, color='black')
plt.axvline(0, color='black')
plt.grid()
plt.show()

我猜你的意思是你想从颜色栏中删除小刻度。

您可以通过使用 LogLocator from the matplotlib.ticker 模块设置刻度的位置来完成此操作。默认情况下,这没有任何小刻度(即基数的整数幂之间没有刻度),因此我们可以使用 LogLocator 而无需其他选项。

你只需要在创建时保留对 colorbar 的引用(这里我称之为 cb),然后你可以在其上使用 set_ticks() 方法。确保您还设置了 update_ticks=True 以在制作绘图之前进行此更新。

(我使用了一些假数据,但除此之外没有更改脚本中的任何其他内容):

import matplotlib.ticker as ticker

...

cb = plt.colorbar()
cb.set_ticks(ticker.LogLocator(), update_ticks=True)

...

要完全删除刻度 ("How can I delete the short lines?"),您可以在颜色条的轴上使用 tick_params

cbar = plt.colorbar()
cbar.ax.tick_params(size=0)