Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

pygal : agrandir les textes

+1 vote

Je cherche à agrandir les textes d'une image de ce type générée avec pygal (version à jour avec python 2.7).

Voici le code :

#!/usr/bin/env python
# coding: utf-8

import pygal
from pygal.style import Style

s = Style (
    #~ title_font_size = '16'
)
pie_chart = pygal.Pie(style=s)
pie_chart.title = 'pygal test'
pie_chart.add('toto', 4)
pie_chart.add('tutu', 7)
pie_chart.add('titi', 2)
pie_chart.add('tata', 3)
text = pie_chart.render()
file = open('image.svg', 'w')
file.write(text)

Ce qui donne l'image suivante :
https://framapic.org/aosrMwjsYsOO/HRpHsWCA

Du coup j'ai essayé de trouver la variable qui s'occupe de gérer la taille des polices sans succès.
J'ai alors rajouté la variable "titlefontsize" qui semble bien prise en compte puisqu'elle me sort l'erreur suivante :

12:10 user@laptop:~/bazar/test_pygal $ ./pygal_use.py
Traceback (most recent call last):
  File "./pygal_use.py", line 16, in <module>
    text = pie_chart.render()
  File "/usr/local/lib/python2.7/dist-packages/pygal/graph/public.py", line 49, in render
    self.setup(**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/pygal/graph/base.py", line 213, in setup
    self._draw()
  File "/usr/local/lib/python2.7/dist-packages/pygal/graph/graph.py", line 789, in _draw
    self._compute_margin()
  File "/usr/local/lib/python2.7/dist-packages/pygal/graph/graph.py", line 612, in _compute_margin
    self.title, self.width, self.style.title_font_size)
  File "/usr/local/lib/python2.7/dist-packages/pygal/util.py", line 347, in split_title
    size = reverse_text_len(width, title_fs * 1.1)
TypeError: can't multiply sequence by non-int of type 'float'

N'hésitez pas si j'ai oublié des infos.

Merci par avance :)

Edit : ajout de l'erreur complète.

demandé 16-Oct-2015 par yaap (224 points)
edité 16-Oct-2015 par yaap

Post l'erreur stp

et si tu mets une valeur numérique(16) plutôt q'un string ('16') ?

title_font_size = 16

Merci bubulle, tu as raison !
Je suis un mécréant, j'avais mal lu l'erreur :(

Je passe le sujet en "résolu", mille merci !

Je suis un mécréant, j'avais mal lu l'erreur :(

d'où le :

Post l'erreur stp

;PP

1 Réponse

+1 vote
 
Meilleure réponse

Il suffisait de mettre un int au lieu d'une string…

Pour ne pas poster une réponse inutile, voici un code illustrant l'augmentation des tailles des polices :

#!/usr/bin/env python
# coding: utf-8

import pygal
from pygal.style import Style

s = Style (
    title_font_size = 64,
    value_font_size = 28,
    legend_font_size = 32,
)
pie_chart = pygal.Pie(style=s, print_values=True)
pie_chart.title = 'pygal test'
pie_chart.add('toto', 4)
pie_chart.add('tutu', 7)
pie_chart.add('titi', 2)
pie_chart.add('tata', 3)
# pour afficher la valeur absolue au lieu du pourcentage
pie_chart.value_formatter = lambda x: '%d' % x
text = pie_chart.render()
file = open('image.svg', 'w')
file.write(text)

Et si comme moi vous cherchez la doc de pygal à propos des styles, vous trouverez pas mal d'information dans les fichiers sources (classe Style) :

/usr/local/lib/python2.7/dist-packages/pygal/style.py

répondu 16-Oct-2015 par yaap (224 points)

ps : le code est en python 2.7

...