Как изменить настройки 3d оси в matplotlib - PullRequest
4 голосов
/ 25 сентября 2011

enter image description here

Мне удалось создать этот график с помощью matplotlib.Я хотел бы удалить 0.2, 0.4, 0.6 .. из оси с именем B и изменить интервал оси с 200 на 100 на оси с именем A. Я уже давно пытаюсь сделать это ... Есть предложения??

вот код, который я написал.

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()

Пожалуйста, игнорируйте несущественные детали ..

1 Ответ

3 голосов
/ 25 сентября 2011

Это не так просто на самом деле, вы должны вникать в объекты. Сначала я предположил, что, поскольку Axes3D основан на Axes, вы можете использовать метод set_yticklabels, но, очевидно, это не работает. Глядя в код, вы можете видеть, что ось y задается через w_yaxis, axis3d.YAxis, который, в свою очередь, в конечном итоге основан на axis.Axis, который имеет метод set_ticklabels, и это сработало:

ax.w_yaxis.set_ticklabels([])

Что вы имеете в виду под "изменить интервал оси с 200 на 100 на оси с именем A"?

...