2011-09-25 4 views
4

enter image description hereComment modifier les paramètres de l'axe 3D dans matplotlib

J'ai réussi à créer ce graphique en utilisant matplotlib. Je voudrais supprimer les 0.2, 0.4, 0.6 .. de l'axe nommé B et changer l'intervalle d'axe de 200 à 100 dans l'axe nommé A. J'ai essayé de faire ceci pendant assez longtemps maintenant ... Des suggestions? ?

Voici le code que j'ai écrit.

from mpl_toolkits.mplot3d import Axes3D 
import numpy as np 
import matplotlib 
import matplotlib.pyplot as plt 
f_attributes=open("continuous.data","r") 
x=[] 
y=[] 
spam=[] 
count=1 
skew=[] 
fig = plt.figure() 
ax = Axes3D(fig) 
total=[] 
while count<=1024: 

attributes=f_attributes.readline() 
attributes=attributes.replace(".\n","") 
attributes=attributes.split(',') 
classification=int(attributes[10].replace(".\n","")) 
if float(attributes[8]) >=0: 

    skew.append(float(attributes[8])) 
    x.append(count) 
    y.append(classification) 


    if classification == 0: 
     ax.scatter(x, y, skew, c='g', marker='o') 

    else: 
     ax.scatter(x, y, skew, c='r', marker='o') 

    x=[] 
    y=[] 
    skew=[] 
count+=1 


ax.set_xlabel('A') 
ax.set_ylabel('B') 
ax.set_zlabel('C') 
plt.show() 

S'il vous plaît ignorer les détails non pertinents ..

Répondre

3

Ce n'est pas si facile en fait, vous devez plonger dans les objets. J'ai d'abord supposé que Axes3D est basé sur Axes, vous pouvez utiliser la méthode set_yticklabels, mais apparemment cela ne fonctionne pas. En regardant dans le code, vous pouvez voir que l'axe y est défini par w_yaxis, un axis3d.YAxis, qui à son tour est finalement basé sur axis.Axis qui a la méthode set_ticklabels, et cela a fonctionné:

ax.w_yaxis.set_ticklabels([]) 

Qu'est-ce que voulez-vous dire par "changer l'intervalle d'axe de 200 à 100 dans l'axe nommé A"?

+0

hey ça marche bien, merci! .. désolé pour la confusion, la deuxième partie de la question ... l'axe étiqueté "A" a 200 400 600 .... 100, je le veux comme 100 200 300 ... 1000 – user926321

+0

n'est-il pas plus simple dans ce cas de simplement changer vos données x? – steabert

+0

hmm .. non pas vraiment, c'est ce que je veux vraiment faire .. je veux réduire la longueur de l'axe étiqueté 'B' .. il a seulement deux valeurs [0,1], maintenant l'intervalle actuel est 0 , 0.2,0.4,0.6 ..., 1 je veux le changer à 0, 0.5, 1, de cette façon la longueur de l'axe 'B' réduit .. – user926321

Questions connexes