Графики с правильной поддержкой юникода - PullRequest
1 голос
/ 22 сентября 2009

Я хочу создать простые диаграммы, такие как пироги и бары в Python.

Я опробовал CairoPlot и pycha. Оба выглядят потрясающе, но, похоже, они не способны правильно обрабатывать символы Юникода.

CairoPlot.pie_plot(name='test.png', width=800, height=600, 
                   data={'eins':100, 'zwei':48, 'drei':90, 'vier':98,u'fünf':187})

результат fünf вместо fünf.

Существует ли простой в использовании модуль с проверенной поддержкой юникода? или вы заставили CairoPlot или pycha правильно отображать юникоды?

Я предпочитаю собственное решение, поэтому гугл-чарт не тот, что я хочу.

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

ответ Ironfroggy заставил меня попробовать это

CairoPlot.pie_plot(name='test.png', width=800, height=600, 
                   data={'eins':100, 'zwei':48, 'drei':90, 'vier':98,'f\xc3\xbcnf':187})

это работает.

Как можно безопасно преобразовать строки юникода в строки ascii с экранированными не-ascii символами?

редактировать 2

u'fünf'.encode('latin-1')

делает свое дело. Спасибо!

редактировать 3

для пыча это работает так же

dataSet = (                                
     ('dataSet 1', ((0, 1), (1, 3), (2, 2.5))),
     ('dataSet 2', ((0, 2), (1, 4), (2, 3))),
     (u'dataSet Ü'.encode('latin-1'), ((0, 5), (1, 1), (2, 0.5))),
)
chart = pycha.bar.VerticalBarChart(surface)
chart.addDataset(dataSet)                  
chart.render()
surface.write_to_png('output.png')

Ответы [ 2 ]

1 голос
/ 09 апреля 2015

Попробуйте использовать стороннюю библиотеку для замены юникода мусора, я буду рад предоставить вам одну при профессиональном консульстве

1 голос
/ 22 сентября 2009

Будьте внимательны, не включая ASCII, прямо в ваш источник. Вы включаете подсказку о кодировке в свой источник?

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

И, конечно же, вы уверены, что ваш редактор правильно сохраняет файл в той кодировке, в которой вы думаете? Самым безопасным вариантом по-прежнему является сохранение исходного кода в ASCII и выполнение строковых литералов Юникода с экранированными не-ASCII-символами (например, \ UXXXX, где XXXX - ваша кодовая точка).

...