我正在绘制一些CPU时间统计信息,并希望能够注释某些值。我想为此使用pygal's value configuration,但这似乎无法与我使用的DateTimeLine图表结合使用。
def generate_cpu_time_plot(csv_file_path, output_file):
user = []
system = []
with open(csv_file_path, encoding="utf-8") as csv_file:
reader = csv.DictReader(csv_file)
for row in reader:
time = datetime.fromtimestamp(int(row['time_millis']) / 1000)
user.append((time, {
'value': float(row['cpu_time_user'])
}))
system.append((time, {
'value': float(row['cpu_time_system'])
}))
chart = pygal.DateTimeLine(x_label_rotation=35,
x_value_formatter=lambda dt: dt.strftime(
'%d/%m/%Y %H:%M'), x_title='Time',
y_title='CPU time',
title=os.path.basename(csv_file_path))
chart.add("User", user)
chart.add("System", system)
chart.render_to_file(output_file)
这给了我一个TypeError:TypeError: '<' not supported between instances of 'dict' and 'dict'
有没有办法使这种组合有效?如果我直接使用浮点数而不使用dict,则效果很好。
答案 0 :(得分:0)
您提供给XY图表的x和y值的元组为 值。当您使用dict
格式提供值时,需要将value
属性设置为该元组。
目前,您的代码尝试在元组中为y值放置dict
。将值附加到user
和system
列表的行更改为以下内容应该可以解决此问题:
user.append({'value': (time, float(row['cpu_time_user']))})
system.append({'value': (time, float(row['cpu_time_system']))})