J'ai un problème (bug?) Avec traceur 3D dans matplotlib que je me demande si quelqu'un peut vous aider s'il vous plaît?Matplotlib 3D: les limites de l'axe sont toujours trop grandes (ne définit pas correctement les limites)
Comme on peut le voir par les parcelles par exemple galerie matplotlib (par exemple à partir de: https://matplotlib.org/examples/mplot3d/surface3d_demo.html), lorsque l'utilisateur règle les limites d'axe manuellement, et une graduation est placée à la limite, l'axe lié se prolonge un peu:
Je veux que l'axe affiche l'étiquette graduée 1.01, mais cela devrait être le sommet du cube (sans espace gris/ligne noire au-dessus). Est-ce possible s'il vous plaît? En tant que demande distincte, plus mineure, je voudrais ensuite dessiner une ligne noire autour du bord de la grille pour la faire ressortir. Ceci est moins important que de fixer les limites, cependant.
Pour référence, voici le code qui rend le tracé ci-dessus:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
# Make data.
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
# Plot the surface.
surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm, linewidth=0, antialiased=False)
# Customize the z axis.
ax.set_zlim(-1.01, 1.01)
ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))
# Add a color bar which maps values to colors.
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()
Merci pour la suggestion, même si je crains que cela ne change rien pour moi. J'ai ajouté le code pour rendre le chiffre à mon message original - cette suggestion fonctionne-t-elle pour vous? Merci. – IanRoberts
Vous avez raison, cette solution n'élimine pas l'espace. – ImportanceOfBeingErnest
@IanRoberts J'ai mis à jour la réponse pour inclure l'intrigue que je reçois. Après avoir appliqué l'autoscale, j'obtiens la limite maximum comme 1.00 au lieu de 1.01 – theLearner