Je voudrais définir la barre de couleurs de mon tracé à une hauteur personnalisée, pas nécessairement pour correspondre à la taille de l'intrigue. En fait, je voudrais que la hauteur de la barre de couleurs PLUS le titre en haut de celui-ci pour correspondre à la hauteur de la figure.Modifier la barre de couleurs matplotlib à la hauteur personnalisée
Avec
ax3 = divider.append_axes('right', size='10%', pad=0.3)
cb = plt.colorbar(Q, cax=ax3, ticks=[0.0, 3.0, 6.0, 9.0, 12.0, 15.0], format='%.1f')
je réussi à avoir un colorbar avec la même hauteur que l'intrigue, qui a été demandé pour beaucoup d'autres fois, maintenant je voudrais rétrécir.
Suite à la suggestion fournie dans d'autres questions, j'ai décidé de donner explicitement à la barre de couleurs ses propres axes avec add_axes
, après avoir obtenu la position des derniers axes de traçage avec get_position
. Voici ce que j'essaie de faire. Il n'y a pas de données et pas colorbar dans cet exemple, juste pour montrer que je ne reçois pas le résultat que je m'y attendais:
from __future__ import unicode_literals
import numpy as np
from scipy.interpolate import griddata
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
from matplotlib.pylab import cm
import matplotlib.colors as colors
from mpl_toolkits.axes_grid1 import make_axes_locatable, axes_size
matplotlib.rcParams.update({'font.size': 8})
fig = plt.figure()
fig.set_size_inches(6.3,6.3)
ax1 = plt.subplot(111)
divider = make_axes_locatable(ax1)
ax2 = divider.append_axes('right', size='100%', pad=0.3)
axes = [ax1, ax2]
ltypes = ['dashed', 'solid']
xi = np.linspace(-18.125, 18.125, 11)
yi = np.linspace(0, 28, 9)
xv, yv = np.meshgrid(xi, yi)
xcOdd = 0.2
zcOdd = 0.725
xcEven = 0.6
zcEven = 0.725
maskRadius = 0.15
for i in range(2):
ax = axes[i]
ax.set_xlabel('distance [m]')
if i == 0:
ax.set_ylabel('depth [m]')
if i == 1:
ax.set_yticklabels([])
ax.invert_yaxis()
ax.tick_params(direction='in')
ax.set_aspect('equal')
odd = Circle((xcOdd, zcOdd), .15, linewidth=1.2, color='k', fill=False)
even = Circle((xcEven, zcEven), .15, linewidth=1.2, linestyle=ltypes[i], color='k', fill=False)
vmax = 15.
vmin = 0.
norm = matplotlib.colors.Normalize(vmin,vmax, clip=False)
color_map = matplotlib.colors.ListedColormap(plt.cm.Greys(np.linspace(0.25, 1, 5)), "name")
ax.add_patch(odd)
pad = 0.03
width = 0.03
pos = ax2.get_position()
ax3 = fig.add_axes([pos.xmax + pad, pos.ymin, width, 0.7*(pos.ymax-pos.ymin) ])
plt.savefig('prova-vect-paper-test-2.eps', format='eps')
Pourquoi get_position renvoyait les mauvaises BoîteDeContour?
Pourquoi ne puis-je voir commenta et des réponses à cette question plus ?? – user2078621
L'utilisateur qui a fourni une réponse l'a supprimé car il n'a apparemment pas résolu votre problème. En ce qui concerne le problème réel, vous voudrez probablement aller plus en détail sur la façon dont votre intrigue devrait ressembler. (Cela dépend aussi du type de personnage que vous montrez, est-ce un format égal ou non?). – ImportanceOfBeingErnest