2017-10-19 229 views
2

我和matplotlib阴谋,我有短线的彩条:我怎么能删除彩条的短行matplotlib

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

我想你的意思是你想从彩条删除次刻度。

您可以通过使用matplotlib.ticker模块中的LogLocator设置滴答位置来完成此操作。默认情况下,它没有任何次要的滴答(即基数的整数次幂之间没有滴答),所以我们可以使用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

0

要完全去除蜱(“我怎样才能删除短线?“),您可以在颜色条的轴上使用tick_params

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

enter image description here

+0

谢谢!这是我一直在寻找的 –