2009-09-28 5 views
1

Как добавить строки в оси Axes3D вместо цифр?Python matplotlib 3d bar function

Я только начал использовать matplotlib. Я использовал Axes3dD для построения аналогичного примера, приведенного на их сайте (http://matplotlib.sourceforge.net/examples/mplot3d/bars3d_demo.html). Обратите внимание, что нужно использовать последний verson (matplotlib 0.99.1), в противном случае ось становится немного причудливой. В этом примере используйте этот код:

from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 
import numpy as np 

fig = plt.figure() 
ax = Axes3D(fig) 
for c, z in zip(['r', 'g', 'b', 'y'], [30, 20, 10, 0]): 
    xs = np.arange(20) 
    ys = np.random.rand(20) 
    ax.bar(xs, ys, zs=z, zdir='y', color=c, alpha=0.8) 

ax.set_xlabel('X') 
ax.set_ylabel('Y') 
ax.set_zlabel('Z') 
plt.show() 

Теперь, к моей проблеме, я не могу переименовать ось в то, что хочу. Вместо чисел мне нужно называть скрепки именами строк. Этого я хочу сделать только в двух измерениях: размерности x и размерности z (глубина). Я попытался использовать эту команду:

ax.set_xticklabels('First staple',(0,0)) 

У меня нет сообщения об ошибке, но, тем не менее, нет жало. Если кто-то может ответить на этот вопрос, я был бы в восторге!

ответ

2

Ваш фактически на правильном пути. но вместо строки вы хотите передать список или кортеж в set_xticklabels(). Вы также можете настроить расположение центра для метки с помощью set_xticks().

Вы также можете найти эту функцию для использования get_xmajorticklabels(). Он вернет отображаемые тиковые метки. Таким образом, вы также можете настроить значение из своих результатов.

0

Также извлекайте данные о оси, работайте над этим и установите его на рендеринг, оказалось намного проще для меня;) кроме этого, что NerdyNick говорит