Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 4, 2013 09:15:36

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

редактирование подписей matplotlib

привет

есть такой скрипт

# coding: utf-8
from datetime import *
from numpy import *
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import pylab
import os
Inform = eval(open(os.getcwd()+'\\in.txt').read())
need_curr = [u"USD", u"JPY",u"EUR"]
yAxis = []
# Для каждой валюты:
for i in range(0, len(need_curr)):
    # Добавляем в массив список со значениями для каждого дня
    yAxis.append([Inform[x][i][1][0] for x in range(0, len(Inform))])
# Определяем массив, который будет хранить значения по оси абсцисс
xAxis = range(1, len(Inform)+1)
# Для каждой из валют
for i in range(0, len(yAxis)):
    # Строим свой график и подписываем его на легенде
    plt.plot(
        xAxis,
        yAxis[i],
        label=(str(Inform[0][i][1][1])+" "+Inform[0][i][0]),
        )
# Указываем подписи к графику и выводим легенду
plt.xlabel('time')
plt.ylabel('rate')
plt.title('Currently exchange')
plt.legend(loc = "best")
# Сохраняем график в формате pdf
plt.savefig('grafic.pdf')
# Закрываем график, во избежание изменений
plt.close()
print "Done!"

который выводит график изменений курса валют.
данные для курса берет из файла in.txt
файл сохранене repr'om. поэтому читаем через eval.
структура списка такова:
[
    [
        (USD Валюта, (курс, НД), дата),
        (JPY Валюта, (курс, НД), дата),
        (EUR Валюта, (курс, НД), дата),
    ]
    [
        ...
    ]
]
данные с 1.1.2011 года по 2.2.2011 года.
необходимо чтобы по оси Х было только два значения. начало и конец месяца

спасибо

Прикреплённый файлы:
attachment script.zip (1,5 KБ)

Офлайн

#2 Фев. 4, 2013 20:49:03

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

редактирование подписей matplotlib

Офлайн

#3 Фев. 5, 2013 06:17:22

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

редактирование подписей matplotlib

все равно не понял.
совсем сократил код

import matplotlib.pyplot, random
# точки по Х, всего 366 точек. каждая точка это день в году
# 1-1.1.11, 2-2.1.11 ....365-31.12.2011
xAxis = range(1, 366) 
# точки по У
yAxis = range(10, 71)*6
yAxis.pop() # удаляем последнее значение чтобы было 365 значений
random.shuffle(yAxis)
matplotlib.pyplot.plot(xAxis, yAxis)
matplotlib.pyplot.show()

мне надо чтобы начало каждого месяца отображался по оси х, и чтобы его метка, черточка на оси Х, была больше чем у остальных.

спасибо

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version