Как построить несколько графиков в одном графике с помощью pygal (python)?
Я пытаюсь построить несколько рядов с двумя измерениями (так что на самом деле это num_of_ time series * 2 графики на одном рисунке с использованием pygal. Данные должны выглядеть так:
from collections import defaultdict
measurement_1=defaultdict(None,[
("component1", [11.83, 11.35, 0.55]),
("component2", [2.19, 2.42, 0.96]),
("component3", [1.98, 2.17, 0.17])])
measurement_2=defaultdict(None,[
("component1", [34940.57, 35260.41, 370.45]),
("component2", [1360.67, 1369.58, 2.69]),
("component3", [13355.60, 14790.81, 55.63])])
x_labels=['2016-12-01', '2016-12-02', '2016-12-03']
А код рендеринга графа таков:
from pygal import graph
import pygal
def draw(measurement_1, measurement_2 ,x_labels):
graph = pygal.Line()
graph.x_labels = x_labels
for key, value in measurement_1.iteritems():
graph.add(key, value)
for key, value in measurement_2.iteritems():
graph.add(key, value, secondary=True)
return graph.render_data_uri()
Текущий результат равен, что .
Проблема в приведенном выше коде заключается в том, что неясно, какой граф принадлежит измерению 1, а какой-измерению 2. Во-вторых, я хочу видеть каждый компонент в цвете (или форме) в обоих из измерений (теперь похоже, что они вообще не связаны). Например, компонент 1-розовый, компонент 2-зеленый, компонент 3-желтый Этот график призван сравнить один компонент с двумя другими и увидеть корреляцию между измерениями 1 и 2. Надеюсь, я достаточно ясно выразился.Спасибо за помощь, ребята!
1 ответ:
Я понял, как отличить сравниваемый компонент по пунктирной линии. Код должен выглядеть так:
from pygal import graph import pygal def draw(measurement_1, measurement_2 ,x_labels): graph = pygal.Line() graph.x_labels = x_labels for key, value in measurement_1.iteritems(): ## if "component1": graph.add(key, value, stroke_style={'width': 5, 'dasharray': '3, 6', 'linecap': 'round', 'linejoin': 'round'}) else: ## graph.add(key, value) for key, value in measurement_2.iteritems(): graph.add(key, value, secondary=True) return graph.render_data_uri()