2009-09-22 12 views
1

Je veux créer des graphiques simples comme des tartes et des barres en python.Graphiques avec un support Unicode approprié

J'ai essayé CairoPlot et pycha. Les deux semblent étonnants, mais ils ne semblent pas être en mesure de gérer correctement les caractères Unicode.

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

résultat dans fünf au lieu de fünf.

Existe-t-il un module facile à utiliser avec un support prouvé pour unicode? ou avez-vous fait CairoPlot ou pycha afficher correctement les unicodes?

Je préfère la solution interne, alors google chart n'est pas ce que je veux.

modifier

réponse de ironfroggy m'a fait essayer cette

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

cela fonctionne. Qu'est-ce qu'un moyen sûr de convertir des chaînes unicode en chaînes ascii avec des caractères non-ascii échappés?

modifier 2

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

le tour est joué. Merci!

modifier 3

pour pycha il a travaillé de la même manière

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') 
+0

, c'est un bug dans le module que vous utilisez , vous devriez le signaler. S'ils ont vraiment besoin de chaînes encodées en latin-1, ils devraient aussi bien le documenter. – u0b34a0f6ae

+0

J'ouvre un ticket plus tôt ce jour. – vikingosegundo

Répondre

1

Soyez prudent, y compris directement non-ASCII dans votre source. Incluez-vous un indice d'encodage dans votre source?

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

Et, bien sûr, êtes-vous sûr que votre éditeur enregistre correctement le fichier dans l'encodage que vous pensez qu'il est? Le pari le plus sûr est toujours de garder la source en ASCII et de faire des littéraux de chaîne Unicode avec des caractères non ASCII échappés (comme \ UXXXX où XXXX est votre code).

+0

Les chaînes Unicode proviennent d'une table mysql. S'il vous plaît voir mon edit. – vikingosegundo

1

Essayez d'utiliser une bibliothèque tierce partie pour remplacer le unicode des ordures, je serai heureux de vous fournir un Si des chaînes unicode ne fonctionnent pas sur consulation professionnel