如何删除matplotlib中的colorbar短线

时间:2017-10-19 11:15:36

标签: matplotlib plot colorbar short

我使用matplotlib进行绘图,并且我在colorbar中有短行:

enter image description here

如何删除短行以获得如下图所示的颜色条:

enter image description here

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

#!/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()

2 个答案:

答案 0 :(得分:2)

我认为你的意思是你要从彩条中删除次要刻度。

您可以使用LogLocator模块中的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)

...

enter image description here

答案 1 :(得分:1)

要完全删除刻度线(“如何删除短线?”),可以在颜色条的轴上使用tick_params

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

enter image description here