2016-12-25 6 views
8

Я пытаюсь построить несколько серий с двумя измерениями (так что это на самом деле num_of_ временных рядов * 2 графика в одном рисунке с помощью pygal Данные должно выглядеть так:.Как построить несколько графиков в одной диаграмме с использованием pygal (python)?

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() 

Текущий результат that

проблема в коде выше, что это не ясно, какой график относится к измерению 1 и которая одна принадлежит. s к измерению 2. Во-вторых, я хочу видеть каждый компонент в цвете (или форме) в обоих измерениях (теперь похоже, что они вообще не связаны). Например COMPONENT1 -розовых, COMPONENT2-зеленый, желтый Component3-

Этот график имеет целью сравнение одного компонента по сравнению с двумя другими, и увидеть корреляцию между измерением 1 и 2.

Я надеюсь, что было достаточно ясно ,

Спасибо за помощь, ребята!

+0

Если вы нашли ответ на свой вопрос, разместите его в разделе «Ответы» ниже, а не в самом параграфе вопроса. –

+0

Несомненно. Я это сделаю. –

ответ

0

Я выяснил, как отличить сравниваемый компонент пунктирной линией. Код должен выглядеть так:

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()