2017-10-19 449 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

謝謝!這是我一直在尋找的 –