This example показывает, как устанавливать гиперссылки, если вы выводите SVG. Обратите внимание, что это имеет смысл только для SVG. Если сюжет - это просто изображение, это просто изображение, а изображения не могут иметь гиперссылок в них.
Если вы хотите, чтобы у вас есть возможность щелкнуть объект в окне интерактивного графика и сделать это как гиперссылку, вы можете создать обработчик событий для обработки события «pick» и открыть браузер или что-то еще , См. this example, как делать события выбора. Графики Matplotlib - это не веб-страницы или даже действительно документы, а просто окна с графикой, отображаемой в них, поэтому они не поддерживают гиперссылки как таковые; используя событие pick, вы можете эмулировать гиперссылку, открывая веб-браузер при щелчке по объекту.
Редактировать: Вы правы, это не работает. Кажется, что свойство URL-адреса считывается и используется только для определенных типов объектов. Googling, я вижу несколько старых списков рассылок matplotlib, в которых, похоже, идея заключалась в том, чтобы постепенно добавлять поддержку URL-адресов для разных типов исполнителей, но я думаю, они никогда не обходили ее. Я предлагаю вам поднять ошибку об этом на matplotlib bug tracker.
В то же время есть способ сделать это, но это несколько круговая. URL-адрес нарисован для объектов PathCollection, поэтому вы можете сделать Path из своего текста, а затем вывести PathCollection из этого пути, а затем добавить этот PathCollection в свой сюжет. Вот пример:
pyplot.scatter([1, 2, 3], [4, 5, 6])
t = mpl.text.TextPath((2, 4), 'This is text', size=0.1)
pc = mpl.collections.PathCollection([t])
pc.set_urls(['http://www.google.com'])
ax = pyplot.gca()
ax.add_collection(pc)
pyplot.draw()
f = pyplot.gcf()
f.canvas.print_figure('fig.svg')
Обратите внимание, что вы должны использовать set_urls
и не set_url
. Этот метод создает SVG с интерактивным текстом, но имеет некоторые недостатки. В частности, кажется, вам нужно вручную установить размер текста в координатах данных, поэтому может потребоваться некоторое время, чтобы найти размер текста, который не слишком смехотворно огромен или крошечный по отношению к величине ваших построенных данных.
Права, я выводя в SVG и я следовал этому примеру. Он работает для изображений и разброса графиков, но если я попробую одно и то же для текстовых объектов, гиперссылка не появится. –
@ HH: Вы правы, кажется, что URL-адреса никогда не были реализованы для большинства типов исполнителей. См. Мой отредактированный ответ для довольно обходного решения. – BrenBarn
Это для вашей помощи. Я попробую немного; Я нашел решение здесь, которое работает довольно хорошо: http://stackoverflow.com/questions/12387585/python-matplotlib-svg-and-hyperlinks-in-text-labels –