2017-10-19 26 views
2

J'ai comploter avec matplotlib et j'ai courtes lignes colorbar:comment puis-je supprimer les lignes courtes de la colorbar dans matplotlib

enter image description here

Comment puis-je supprimer les lignes courtes d'avoir un colorbar comme cette image:

enter image description here

ce que je dois changer dans mon code? Mon code est ici:

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

Répondre

2

Je suppose que vous voulez dire que vous voulez supprimer les tiques mineures du colorbar.

Vous pouvez le faire en définissant l'emplacement des graduations à l'aide d'un LogLocator à partir du module matplotlib.ticker. Par défaut, il n'y a pas de coches mineures (c.-à-d. Pas de coches entre les puissances entières de la base), donc nous pouvons utiliser le LogLocator sans aucune autre option requise.

Vous avez juste besoin de garder une référence à la colorbar comme vous le faites (ici je l'appelle cb), alors vous pouvez utiliser la méthode set_ticks() sur cela. Assurez-vous que vous avez également défini update_ticks=True pour que cette mise à jour corresponde avant de créer l'intrigue.

(j'ai utilisé des données fausses, mais autrement n'a pas changé quoi que ce soit d'autre dans votre script):

import matplotlib.ticker as ticker 

... 

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

... 

enter image description here

0

Pour supprimer complètement les tiques ("Comment puis-je supprimer les lignes courtes ? ") vous pouvez utiliser tick_params sur les axes de la barre de couleurs.

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

enter image description here

+0

Merci !!! C'était ce que je cherchais –