2016-06-26 3 views
0

Pythonを使用して、Pygalチャートのデータをプログラムで更新するにはどうすればよいですか?Pythonを使用して、Pygalチャートのデータをプログラムで更新するにはどうすればよいですか?

以下のコードはスタティックなスタックバーチャートとして機能しますが、値の変更方法を理解することはできません。私は5分ごとに文字列としてREST呼び出しから来る、更新したいと

  • 私の値は、:/問題

    考慮事項。

  • リストに文字列を挿入するとエラーが発生するため、Pygalチャートのデータを更新する方法がわかりません(下記参照)。
  • 新しい整数のリストを下の「クラス」に挿入する方法がわかりません。
  • この例では5つのデータポイントしか表示していませんが、最終的に100データポイントを持つ必要があります。
  • 設定変数は静的な要素数では機能しますが、要素は散発的に増減します。

import pygal 

line_chart = pygal.HorizontalStackedBar() 
line_chart.title = 'Application Health' 
line_chart.x_labels = ("cluster05", "cluster04", "cluster03", "cluster02", "cluster01") 
line_chart.add('Critical', [2, 5, 4, 1, None]) 
line_chart.add('Warning',[1, 7, 2, None, 2]) 
line_chart.add('OK', [25, 30, 19, 20, 25]) 
line_chart.render_to_file('test_StackedBar.svg') 

ライン型は、以下のクラスです。あなたはTypeErrorを持って

>>> type(line_chart.add('OK', [25, 30, 19, 20, 25])) 
<class 'pygal.graph.horizontalstackedbar.HorizontalStackedBar'> 
>>> 

newData = "21, 55, 35, 82, 47, 70, 60" 
line_chart.add('OK',[newData]) 

TypeError: unsupported operand type(s) for +: 'int' and 'str' 

newData = "21, 55, 35, 82, 47, 70, 60" 
y = list(newData) 
line_chart.add('OK',[y]) 
line_chart.render_to_file('test_StackedBar.svg') 

TypeError: unsupported operand type(s) for +: 'int' and 'list' 

答えて

0

。それは数字のリストを期待しています。

これは、置換のような変数を考えるのは簡単だ: y = [1,2,3]は、だけではなく、[1,2,3]を入れて、どこにでもyがあることを意味します。あなたが[y]を行うときに、それは喜んであなたはそれを単一の文字列を含むリスト与えている[[1,2,3]]

に置き換え:渡し、その後、 ["21, 55, 35, 82, 47, 70, 60"]をそのリスト内の: [["21, 55, 35, 82, 47, 70, 60"]]、それは期待するものではありません。

それは整数のリストを望んでいる:

y = [21, 55, 35, 82, 47, 70, 60] 
line_chart.add('OK',y) 

チャートを更新するには、私がpygalに慣れていないよ(それを再構築する可能性がありますので、それは場所で編集をサポートするかもしれませんが、再構築します

update_chart([2, 5, 4, 1, None], [1, 7, 2, None, 2], [25, 30, 19, 20, 25])または を:常に

def update_chart(crit_values, warning_values, ok_values): 
    line_chart = pygal.HorizontalStackedBar() 
    line_chart.title = 'Application Health' 
    line_chart.x_labels = ("cluster05", "cluster04", "cluster03", "cluster02", "cluster01") 
    line_chart.add('Critical', crit_values) 
    line_chart.add('Warning', warning_values) 
    line_chart.add('OK', ok_values) 
    line_chart.render_to_file('test_StackedBar.svg') 

は、あなたがそれを再構築し、実行して、各タイプのためにそれの新しいリストを渡すことができるようになります)動作しますupdate_chart(x, y, z)ここで、x、y、zは上記の整数リストです。

関連する問題