首页 > 解决方案 > Pyplot - 当一个轴的列表长度不一致时,如何在同一个图表上绘制多条线?

问题描述

我试图在同一个图表上绘制多条线,其中一个轴列表由日期组成,另一个是与每个日期对应的数字列表。但是,当我绘制第二行时,日期列表的内容和长度与绘制的第一行不同。因此,为了尝试解决这个问题,我将所有使用的日期放入 1 个数组中,并将其用于 y 轴。这给我留下了一个问题,即 x 轴的长度永远不会与 y 轴的长度相同,从而导致错误。为了解决这个问题,我尝试了以下方法:

while len(y) != len(dates): 
    y.insert(0, 0)
plt.plot(dates, y)  # plots the line for x (dates) and y

这修复了错误,但是图表现在应该在绘制 1 时绘制 0。

图表的图像在这里

该图应绘制在 0.1 而不是 0.0

所以我要问的是如何在与日期相关的正确位置用零填充 y 轴列表,而不是将所有零放在列表的开头?

标签: pythonmatplotlibgraph

解决方案


在单独的调用中绘制两组数据。这是一个例子:

from datetime import datetime

import matplotlib.pyplot as plt

derby_dates = [datetime(2020, 3, 1),
               datetime(2020, 3, 2),
               datetime(2020, 3, 3),
               datetime(2020, 3, 6)]
derby_cases = [1, 10, 7, 12]
nottingham_dates = [datetime(2020, 3, 1), datetime(2020, 3, 2)]
nottingham_cases = [2, 5]

plt.plot(derby_dates, derby_cases)
plt.plot(nottingham_dates, nottingham_cases)
plt.xticks(rotation=30)
plt.tight_layout()

plt.show()

像这样的情节:

绘图图像


推荐阅读