Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 6, 2011 10:08:47

kt315e
От:
Зарегистрирован: 2009-12-27
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Русские буквы в датах при построении графиков с помощъю matplotlib.

Строю график в котором по оси X даты. При этом название месяца отображается квадратиками вместо букв. Система Debian Lenny 5, локаль utf8, python 2.5.

#!/usr/bin/python
# -*- coding: utf-8 -*-
import datetime
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([datetime.datetime(2010, 1, 1, 22, 0),\
datetime.datetime(2010, 2, 1, 22, 0)], [1.0, 2.0])
fig.autofmt_xdate()
plt.show()



Отредактировано (Фев. 6, 2011 10:11:24)

Офлайн

#2 Фев. 6, 2011 11:56:56

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

Русские буквы в датах при построении графиков с помощъю matplotlib.

from matplotlib import rc
rc('font',**{'family':'verdana'})
rc('text.latex',unicode=True)
rc('text.latex',preamble='\usepackage[utf8]{inputenc}')
rc('text.latex',preamble='\usepackage[russian]{babel}')
как то так, в доках это написано. Еще есть в нелпах pyscripter



Офлайн

#3 Фев. 6, 2011 14:11:57

kt315e
От:
Зарегистрирован: 2009-12-27
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Русские буквы в датах при построении графиков с помощъю matplotlib.

from matplotlib import rc
rc('font',**{'family':'verdana'})
rc('text.latex',unicode=True)
rc('text.latex',preamble='\usepackage[utf8]{inputenc}')
rc('text.latex',preamble='\usepackage[russian]{babel}')
Уже пробовал - неработает



Офлайн

#4 Фев. 6, 2011 14:23:50

Subideal Ox
От:
Зарегистрирован: 2010-11-23
Сообщения: 65
Репутация: +  0  -
Профиль   Отправить e-mail  

Русские буквы в датах при построении графиков с помощъю matplotlib.

Для работы предложенного варианта нужен latex. Чтобы его не устонавливать, можно попробовать прописать пути к шрифтам в font_manager.py



Офлайн

#5 Фев. 6, 2011 14:35:00

kt315e
От:
Зарегистрирован: 2009-12-27
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Русские буквы в датах при построении графиков с помощъю matplotlib.

Subideal Ox
Для работы предложенного варианта нужен latex. Чтобы его не устонавливать, можно попробовать прописать пути к шрифтам в font_manager.py
Есть Latex, прописал пути к шрифтам в font_manager.py. Пробовал по разному, может ему шрифт надо которого у меня нет?
Фрагмент из font_manager.py:
X11FontDirectories  = [
# an old standard installation point
"/usr/X11R6/lib/X11/fonts/TTF/",
# here is the new standard location for fonts
"/usr/share/fonts/",
# documented as a good place to install new fonts
"/usr/local/share/fonts/",
# common application, not really useful
"/usr/lib/openoffice/share/fonts/truetype/",
"/usr/share/fonts/truetype/",
"/usr/share/fonts/truetype/freefont"
]
Как сделать чтобы по англиски писал?



Офлайн

#6 Фев. 6, 2011 14:48:04

Subideal Ox
От:
Зарегистрирован: 2010-11-23
Сообщения: 65
Репутация: +  0  -
Профиль   Отправить e-mail  

Русские буквы в датах при построении графиков с помощъю matplotlib.

kt315e
Есть Latex, прописал пути к шрифтам в font_manager.py. Пробовал по разному, может ему шрифт надо которого у меня нет?
В этом случае было бы здорово, если бы Вы привели сообщение об ошибке.

У меня работает вот так:

X11FontDirectories  = [
"/usr/share/fonts/truetype/msttcorefonts/",
"/usr/share/fonts/truetype/freefont/",
"/usr/share/fonts/truetype/ttf-dejavu/",
"/usr/share/fonts/truetype/ttf-liberation/",
"/usr/share/fonts/type1/gsfonts/",
"/usr/share/fonts/type1/mathml/",
"/usr/share/matplotlib/mpl-data/fonts/",
"/usr/share/matplotlib/mpl-data/fonts/ttf/",
"/usr/share/matplotlib/mpl-data/fonts/afm/",
"/usr/share/matplotlib/mpl-data/fonts/pdfcorefonts",
# an old standard installation point
"/usr/X11R6/lib/X11/fonts/TTF/",
# here is the new standard location for fonts
"/usr/share/fonts/",
# documented as a good place to install new fonts
"/usr/local/share/fonts/",
# common application, not really useful
"/usr/lib/openoffice/share/fonts/truetype/",
]
kt315e
Как сделать чтобы по англиски писал?
Если нет желания ковыряться в настройках, я бы месяцы выводил цифрами.



Офлайн

#7 Фев. 6, 2011 15:04:06

kt315e
От:
Зарегистрирован: 2009-12-27
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Русские буквы в датах при построении графиков с помощъю matplotlib.

Так нет сообщения об ошибке, всё работает, только вместо букв квадратики. Попробую ваши пути может по ним что надо лежит.

Если нет желания ковыряться в настройках, я бы месяцы выводил цифрами.
А как чтобы полная дата получилась?



Офлайн

#9 Фев. 6, 2011 15:50:40

kt315e
От:
Зарегистрирован: 2009-12-27
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Русские буквы в датах при построении графиков с помощъю matplotlib.

Загадочный код в http://matplotlib.sourceforge.net/examples/api/date_index_formatter.html

def format_date(x, pos=None):
thisind = np.clip(int(x+0.5), 0, N-1)
return r.date[thisind].strftime('%Y-%m-%d')
Да ещё передача данных через глобальную переменную.



Офлайн

#10 Фев. 6, 2011 16:03:51

kt315e
От:
Зарегистрирован: 2009-12-27
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Русские буквы в датах при построении графиков с помощъю matplotlib.

Сделал как здесь: http://matplotlib.sourceforge.net/examples/pylab_examples/date_demo1.html

#!/usr/bin/python
# -*- coding: utf-8 -*-
import datetime
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
from matplotlib.dates import DateFormatter

yearsFmt = DateFormatter('%Y-%m-%d')

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([datetime.datetime(2010, 1, 1, 22, 0),\
datetime.datetime(2010, 2, 1, 22, 0)], [1.0, 2.0])
ax.xaxis.set_major_formatter(yearsFmt)

fig.autofmt_xdate()
plt.show()
Ух! Спасибо!



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version