2017-10-19 19 views
2

의 년 Colorbar의 짧은 라인을 삭제하고 난 년 Colorbar 짧은 라인을 가지고 할 수있는 방법 :내가하기 matplotlib와 플로팅 한하기 matplotlib

enter image description here 내가 같은 년 Colorbar을 가지고 짧은 라인을 삭제할 수 있습니다 방법

이 사진을 : 내 코드를 변경할 필요가있는 무엇

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

나는 당신이 년 Colorbar에서 작은 진드기를 제거 할 말은 가정.

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

감사합니다! 내가 찾고 있던 것이 었어. –