Уведомления

Группа в Telegram: @pythonsu

#1 Май 4, 2011 18:20:46

Arven
От:
Зарегистрирован: 2011-05-04
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Matplotlib подписи по оси X

Здравствуйте! Учусь писать на Питоне. Написала программу простую, вот она:

#!/usr/bin/env python

import pylab
from matplotlib import mlab
from pylab import figure, show

xmin = 0
xmax = 2
dx = 1

xlist = mlab.frange (xmin, xmax, dx)

ylist = [9213, 12683, 15203]


fig = figure()
ax = fig.add_subplot(111)
ax.autoscale_view()
ax.grid(True)

fig.autofmt_xdate()

pylab.plot (xlist, ylist)
show()
Объясните, пожалуйста, как сделать так, чтоб по оси X были не цифры, а даты? Например Oct'10, Nov'10, Dec'10 . Смотрела пример. Как-то очень замороченно… И не очень понимаю, как это прикрутить к моей проге.



Отредактировано (Май 4, 2011 18:42:36)

Офлайн

#2 Май 4, 2011 23:11:25

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Matplotlib подписи по оси X

Точно не помню - но помоему просто достаточно чтобы xlist был массивом (numpy.array) объектов datetime.datetime()



Офлайн

#3 Май 5, 2011 06:14:06

asv13
От:
Зарегистрирован: 2007-01-22
Сообщения: 130
Репутация: +  0  -
Профиль   Отправить e-mail  

Matplotlib подписи по оси X

import pylab
from pylab import figure, show
from datetime import datetime

time = [datetime(2011+i*2, 1, i+1) for i in range(3)]
ylist = [9213, 12683, 15203]
fig = figure()
ax = fig.add_subplot(111)
ax.autoscale_view()
ax.grid(True)
fig.autofmt_xdate()
pylab.plot(time, ylist)
show()
чтобы имзенить формат подписей даты надо указывать его напрямую:

ax.xaxis.set_major_formatter(pylab.DateFormatter('%d.%b.%Y'))



Отредактировано (Май 5, 2011 06:17:30)

Офлайн

#4 Май 5, 2011 09:56:06

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Matplotlib подписи по оси X

Точно asv правильно написал

import pylab,datetime
pylab.plot([datetime.datetime(2011+i*2, 1, i+1) for i in range(3)], [9213, 12683, 15203])
pylab.show()



Офлайн

#5 Май 5, 2011 11:57:30

Arven
От:
Зарегистрирован: 2011-05-04
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Matplotlib подписи по оси X

Большое спасибо!



Офлайн

#6 Май 10, 2011 21:57:57

Arven
От:
Зарегистрирован: 2011-05-04
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Matplotlib подписи по оси X

Здравствуйте еще раз! Я опять с вопросами) В этом примере объясняется, как сделать указатель на определенную точку графика. Нужно указывать координаты точки xy=(0, 1).

ax.annotate('arrowstyle', xy=(0, 1),  xycoords='data',
xytext=(-50, 30), textcoords='offset points',
arrowprops=dict(arrowstyle="->")
)
Как мне быть, если у меня по оси X даты? Как узнать эту координату?



Офлайн

#7 Май 11, 2011 06:20:07

asv13
От:
Зарегистрирован: 2007-01-22
Сообщения: 130
Репутация: +  0  -
Профиль   Отправить e-mail  

Matplotlib подписи по оси X

Arven
Как мне быть, если у меня по оси X даты? Как узнать эту координату?
У вас же есть исходные данные для графика. Вот из них и выбирайте определенную точку, вам виднее какую.

import pylab as pl
from datetime import datetime

time = [datetime(2011+i*2,1,i+1) for i in range(3)]
ylist = [9213, 12683, 15203]
fig = pl.figure()
ax = fig.add_subplot(111)
ax.xaxis.set_major_formatter(pl.DateFormatter('%d.%b.%Y'))
ax.annotate('This point!', xy=(time[1], ylist[1]), xycoords='data',
xytext=(-50, 30), textcoords='offset points',
arrowprops=dict(arrowstyle="->")
)
fig.autofmt_xdate()
pl.plot(time, ylist)
pl.show()



Офлайн

#8 Май 11, 2011 12:24:13

Arven
От:
Зарегистрирован: 2011-05-04
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Matplotlib подписи по оси X

asv13, спасибо большое, у меня все получилось!



Офлайн

#9 Май 20, 2011 21:36:36

Arven
От:
Зарегистрирован: 2011-05-04
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Matplotlib подписи по оси X

Объясните, пожалуйста, у меня на Убунте стоит версия интерпретатора 2.7.1. Я через Центр приложений установила интерпретатор 3.1. Но при запуске интерпретатора версия не поменялась. При этом, мой научный руководитель говорит мне, что моя программа запустилась у него под 2.6. В общем я запуталась окончательно. И еще, как он посмотрел, на чем у него запустилась программа?



Отредактировано (Май 20, 2011 21:42:02)

Офлайн

#10 Май 20, 2011 23:21:50

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Matplotlib подписи по оси X

1 питонов может стоять много
2 грузится старый питон
3 первая строка на экране при запуске интерпретора python 2.6.6…. тоже самое в ответ на help()



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version