2016-04-30 19 views
0

私はMySQLデータベースからのデータのこの種の読んでいます:私は、カラム1(C9、F2、F3内のすべてのノードを結合しますグラフを作るためのライブラリpygalを使用したい異なるYパラメータを使って適切なグラフを描くにはどうすればよいですか?

('c9', 2862, datetime.datetime(2016, 4, 30, 22, 34, 38)) 
('f2', 2862, datetime.datetime(2016, 4, 30, 22, 35, 38)) 
('f3', 2864, datetime.datetime(2016, 4, 30, 22, 36, 38)) 
('f4', 2863, datetime.datetime(2016, 4, 30, 22, 37, 38)) 
('c9', 2880, datetime.datetime(2016, 4, 30, 22, 38, 38)) 
('f2', 2862, datetime.datetime(2016, 4, 30, 22, 39, 38)) 
# and so on! 

を... )を1つのグラフに表示します。だから私は、次のことを試してみました:

time = [] 
y_c9 = [] 
y_f3 = [] 
y_f2 = [] 
for row in data: 
    time.append(row[2]) 
    if row[0] == 'c9': 
     y_c9.append(row[1]) 
    if row[0] == 'f2': 
     y_f2.append(row[1]) 
    if row[0] == 'f3': 
     y_f3.append(row[1]) 
    # and the same for the rest 
    graph.x_labels = time 
    graph.add('c9', y_c9) 
    graph.add('f2', y_f2) 
    graph.add('f3', y_f3 

私はC9、F2、F3のための短い線を取得しますので、時間(x軸)が長く価値があるだろうしながら、しかし、これは、それをカットしていません(長さy_c9、y_f2、y_f3の長さは<です)if文のいくつかの組み合わせを試しましたが、うまくいきませんでした。

適切なグラフを作成するにはどうすればよいですか?

答えて

1

XY chart、または具体的にはpygal.DateTimeLineチャートタイプを使用する必要があります。この方法では、すべての値が同じタイムスケールに対してプロットされ、線は連続しています。

ので、同じように:

graph.x_labels = [item[2] for item in data] 
graph.add('c9',[(item[2],item[0] if item[1]=='c9' else 0) for item in data]) 
graph.add('c9',[(item[2],item[0] if item[1]=='f3' else 0) for item in data]) 
graph.add('c9',[(item[2],item[0] if item[1]=='f2' else 0) for item in data]) 
+0

は、私はあなたの提案を試みたが、私は()このエラーのABSのための '悪いのオペランドのタイプを取得しています:「datetime.datetime''は、どのようにそれを解決するために? –

+0

@Ahmedあなたはpygal.DateTimeLineをチャートタイプとして使用する必要があります。私が参照したページで詳細を確認してください。 – lesingerouge

+0

ありがとうございました。私はすでにこの 'datetimeline = pygal.DateTimeLine( x_label_rotation = 35、truncate_label = -1、 x_value_formatter = lambda dt:dt.strftime( '%d、%b%Y:%I:%M:%S%p ')) datetimeline.add( "Time"、x) 'xはデータの行:x.append(line [2])'から来ますが、私はまだ同じエラーを受けています。 –

関連する問題