Grafana:如何将数据表每行数据分别绘制成独立线性图表
实现每行数据生成独立线性图表的方案
现状与需求
从Redis获取的数据表包含from、value_from、to、value_to四列(共3行数据);当前是将所有行的from+value_from、to+value_to分别汇总成两个图表。需要调整为每行数据单独生成一个仅包含该行value_from和value_to两个数据点的线性图表(共生成3个图表)。
1. 数据转换逻辑
核心是把单条原始记录拆分成包含两个数据点的结构,每个数据点对应一个y值,同时搭配明确的x轴标识:
- 原始行结构:
{from: 起始值, value_from: 起始对应数值, to: 结束值, value_to: 结束对应数值} - 转换后单行列对应绘图数据:
[{x标识: "from", y值: value_from}, {x标识: "to", y值: value_to}]
2. 代码实现示例(Python + Matplotlib)
假设已从Redis取出的数据存储在列表redis_data中,直接按行遍历生成图表:
import matplotlib.pyplot as plt # 模拟从Redis获取的3行数据 redis_data = [ {"from": 1, "value_from": 2, "to": 3, "value_to": 4}, {"from": 2, "value_from": 3, "to": 4, "value_to": 5}, {"from": 3, "value_from": 4, "to": 5, "value_to": 6} ] # 遍历每行生成独立图表 for chart_idx, row_data in enumerate(redis_data, start=1): # 准备绘图用的x标签和y数值 x_ticks = ["from", "to"] y_values = [row_data["value_from"], row_data["value_to"]] # 创建独立画布 plt.figure(figsize=(4, 3)) # 绘制线性图,标记两个数据点 plt.plot(x_ticks, y_values, marker='o', linestyle='-', color='#1f77b4') # 设置图表标题和标签 plt.title(f"线性图表 {chart_idx}") plt.ylabel("数值") plt.grid(True, alpha=0.3) # 显示图表(若要保存替换为plt.savefig(f"chart_{chart_idx}.png")) plt.show()
3. 灵活调整说明
- 如果需要用原始
from和to的数值作为x轴坐标,只需把x_ticks替换为[row_data["from"], row_data["to"]]即可 - 其他可视化工具(如Plotly、Seaborn)的实现逻辑一致:按行拆分数据,为每行单独创建图表并绘制两个数据点的连线
内容的提问来源于stack exchange,提问作者PingFloyd
相关产品推荐
相关产品推荐

