Как сделать рендеринг в латексных пигальских ярлыках
У меня есть несколько 2D-точек данных, которые поставляются с метками, которые я хотел бы отобразить в Pygal. Например, скажем, что для каждой точки мне нужно визуализировать особенность, когда я наведу на нее мышью.
Прежде всего, чтобы построить точки без каких-либо меток, я сделал следующее:
import pygal #
data = [(0, 0), (.1, .2), (.3, .1), (.5, 1), (.8, .6), (1, 1.08), (1.3, 1.1), (2, 3.23), (2.43, 2)]
xy_chart = pygal.XY(stroke=False)
xy_chart.title = 'Correlation'
xy_chart.add('A', data)
xy_chart.render()
И он строит все данные, как я хочу, без меток (это означает, что если я наведу курсор мыши на точку, это даст мне только класс "А" и координаты точки).
Теперь, чтобы добавить метки к моим данным, как мне изменить код? Изначально я пытался сделать это:
xy_chart.add('A', [{'value': data, 'label': r'$\tau = 2.3'}])
Но это дает мне ошибку unsupported operand type(s) for -: 'tuple' and 'tuple
Если я рассматриваю только один элемент списка за раз, например:
first_elem = data[0]
xy_chart.add('A', [{'value': first_elem, 'label': r'$\tau = 2.3'}])
он работает без ошибок, но не отображает в латексе метки, поэтому я вижу на изображении $\tau = 2.3$
вместо предоставленного латексного кода.
Итак, две проблемы: первая - как я могу наносить метки на точки в целом, а вторая - как я могу рендерить эти метки в латексе?
1 ответ
Относительно вашего второго вопроса: я не уверен, что pygal поддерживает LaTeX (я не смог найти никакой информации по этому поводу - поправьте меня, если я ошибаюсь).
По первому вопросу: заполните список данных словарями следующим образом:
data = [{'value': (0, 0), 'label': "τ = 2.3"},
(.1, .2), (.3, .1), (.5, 1), (.8, .6), (1, 1.08), (1.3, 1.1),
(2, 3.23), (2.43, 2)]
...
xy_chart.add('A', data)
...
(Я показал это только для первого срока вашего списка).
Кстати, вы можете включить некоторые символы Юникода, поэтому, если вы не хотите метки с соответствующими математическими формулами, вы сможете получить некоторые символы (например, τ
Вот).
Вы можете использовать списки для программного определения ваших меток. Например,
data = [(0, 0), (.1, .2), (.3, .1), (.5, 1), (.8, .6), (1, 1.08), (1.3, 1.1), (2, 3.23), (2.43, 2)]
labelled_data = [{'value': k, 'label': "τ = 2.3"} for k in data]
...
xy_chart.add('A', labelled_data)
...