首页 > 解决方案 > Pygal:显示每个数据点的信息

问题描述

我一直在玩Pygal,为我正在从事的项目创建一些折线图。我目前将我的y axis设置为记录的值并x axis进行date / time测试。但是,我还想将序列号链接到每个数据点。当您将鼠标悬停在数据点上时,您会以粗体显示 y 值,而在下方则显示记录日期。

有谁知道是否可以将信息链接到数据点而不将它们作为轴标签?

作为参考,我目前将序列号添加到list: 'sn_list'.

        for row in line_graph_query:
            if str(row.date_time) >= start_date and str(row.date_time) <= end_date :
                min_values.append(float(row.minimum_value))
                max_values.append(float(row.maximum_value))
                recorded_values.append(float(row.recorded_value))
                sn_list.append(row.product_serial_number)
                date_list.append(row.date_time)
                number_of_records = number_of_records + 1
        print(min_values)
        print(max_values)
        print(recorded_values)
        distance_x_axis = math.floor(number_of_records/6)
        line_chart = pygal.Line(no_data_text='No result found', style=custom_style,x_labels_major_every=distance_x_axis, x_label_rotation=20, show_minor_x_labels=False )
        line_chart.title = 'Detailed Results of '+test_name+' tests of '+board_pn
        line_chart.x_labels = map(str,date_list)
        line_chart.add('Minimum', min_values)
        line_chart.add('Maximum', max_values)
        line_chart.add('Recorded', recorded_values)
        graph_render.append(line_chart.render_data_uri())
        graphs_to_render[test_name] = graph_render[-1]

标签: pythonsqlalchemyflask-sqlalchemypygal

解决方案


您可以通过将数据提供为 dicts 将工具提示设置为您喜欢的任何文本(请参阅此处的文档)。每个值都应由dict至少具有一个value属性的 a 表示,这与您直接提供给图表的值相同。然后,您可以设置许多其他属性,其中包括label

您应该能够通过更改在if结构中附加数据的三行来获得所需的工具提示:

min_values.append({"value": float(row.minimum_value),
                   "label": row.product_serial_number})
max_values.append({"value": float(row.maximum_value),
                   "label": row.product_serial_number})
recorded_values.append({"value": float(row.recorded_value),
                        "label": row.product_serial_number})

除非您在其他地方使用它,否则这也意味着您不需要sn_list.


推荐阅读