LinePlot未达预期效果,如何生成指定样式折线图?
解决折线图生成问题
首先整理你的系统场景与节点数据为结构化表格:
| 场景 | Node-0 | Node-1 | Node-2 | Node-3 | Node-4 | Node-5 |
|---|---|---|---|---|---|---|
| 原始系统 | 1 | 1 | 1 | 1 | 1 | 1 |
| Node-1泄漏 | 1 | 0.043 | 1 | 1 | 1 | 0.0043 |
| Node-2泄漏 | 1 | 1 | 1 | 1 | 1 | 0.012 |
| Node-3泄漏 | 1 | 1 | 1 | 1 | 1 | 0.0086 |
| Node-4泄漏 | 1 | 1 | 1 | 1 | 1 | 0.0085 |
| Node-5泄漏 | 1 | 1 | 1 | 1 | 1 | 0.0076 |
你用pi1.plot.line()未得到预期效果,核心原因是默认折线图会将场景作为x轴、节点作为折线系列,但你的数据中多数节点值为1,导致折线重叠无法区分。要生成目标样式折线图,需调整数据结构,让节点作为x轴、场景作为折线系列,具体代码如下:
import pandas as pd import matplotlib.pyplot as plt # 先将场景列设为DataFrame索引 pi1.set_index("场景", inplace=True) # 转置DataFrame,把节点转为x轴维度 pi1_transposed = pi1.T # 生成带标记点的折线图 plt.figure(figsize=(10, 6)) pi1_transposed.plot(kind='line', marker='o', ax=plt.gca()) # 自定义图表样式 plt.title("各场景下节点数值变化") plt.xlabel("节点") plt.ylabel("数值") plt.legend(title="场景", bbox_to_anchor=(1.05, 1), loc='upper left') plt.grid(True, linestyle='--', alpha=0.7) plt.tight_layout() plt.show()
这段代码会生成每个场景对应一条折线,x轴为节点名称,能清晰展示不同泄漏场景下节点数值的变化差异,尤其是Node-1和Node-5的异常值会被突出显示。
内容的提问来源于stack exchange,提问作者Khola
相关产品推荐
相关产品推荐

