Как настроить всплывающую подсказку в Pygal?

Я попытался создать гистограмму, отображающую самые популярные проекты на GitHub. Я добавил 'label' и 'xlink' во всплывающие подсказки, однако содержимое 'label' не очень хорошо подходит для некоторых элементов, а также некоторые ссылки не отображаются в всплывающей подсказке некоторых проектов. Смотри ниже,

введите здесь описание изображения

Ниже приведен код Python с использованием модуля Pygal, запустите его и посмотрите файл .svg самостоятельно.

import requests, pygal


url = 'https://api.github.com/search/repositories?q=language:python&sort=star'
r = requests.get(url)
repo_list = r.json()['items']

names, stars = [], []
for k in repo_list:
    names.append(k['name'])
    temp = {
            'value': k['stargazers_count'], 
            'label': k['description'],
            'xlink': k['html_url'],
           }
    stars.append(temp)

my_config = pygal.Config() 
my_config.x_label_rotation = 45

chart = pygal.Bar(my_config)
chart.title = 'GitHub, Python Most Starred Projects'
chart.x_labels = names
chart.add('', stars)
chart.render_to_file('MyFile.svg', force_uri_protocol = 'http')

Как решить эту проблему, изменив размер шрифта всплывающей подсказки или размер окна всплывающей подсказки?


person Nicholas    schedule 27.08.2016    source источник


Ответы (1)


Я не думаю, что есть чистый способ сделать это; Я думаю, вам нужно напрямую изменить файл .svg. В проекте Pygal есть открытая проблема, в которой задается этот вопрос. Кажется, кто-то нашел решение с использованием \n и force_uri_protocol='http', но это не работает для меня. На моей машине \n просто преобразуется в один пробел.

Лучшее, что я смог придумать, это урезать описание до определенного количества символов, примерно так:

temp = {
        'value': k['stargazers_count'], 
        'label': k['description'][:80] + "..." ,
        'xlink': k['html_url'],
       }

Если вам нравится это решение, вы можете добавить некоторую логику, чтобы короткие метки не имели многоточия в конце. Я думаю, что это решение, которое я буду использовать в следующий раз, когда столкнусь с этой проблемой.

person japhyr    schedule 27.08.2016
comment
МОЙ БОГ! Это безумие, но вы мистер Маттес??!! - person Nicholas; 28.08.2016
comment
Да, я иногда смотрю SO для вопросов Pygal. :) - person japhyr; 28.08.2016
comment
Спасибо за обходной путь! (кстати, действительно наслаждайтесь проектами в вашей книге...) - person Nicholas; 29.08.2016