【发布时间】:2020-03-25 20:42:57
【问题描述】:
我正在尝试使用 axes.plot() 方法绘制一个简单的多系列折线图,我需要在 for 循环内将数据传递给 axes.plot()。程序设置如下:
def Plot(dict_inner):
df = pd.DataFrame.from_dict(dict_inner)
cases = df.columns.values.tolist()
fig, ax = plt.subplots()
x = df['Date']
for case in cases:
y = df[case]
ax.plot(x, y)
plt.legend()
plt.show()
这将返回各种matplotlib 方法的错误列表,以:
ValueError:视图限制最小值 -36502.7149864 小于 1,并且是无效的 Matplotlib 日期值。如果您将非日期时间值传递给具有日期时间单位的轴,通常会发生这种情况
ts
但是,如果在 for 循环之外调用该方法,如下所示,我可以生成绘图:
def Plot(dict_inner):
df = pd.DataFrame.from_dict(dict_inner)
fig, ax = plt.subplots()
x = df['Date']
case_1 = '3xKd'
case_2 = '9xKd'
y1 = df[case_1]
y2 = df[case_2]
ax.plot(x, y1)
ax.plot(x, y2)
plt.legend()
plt.show()
我是 Python 新手,如果有任何帮助,我将不胜感激。谢谢!
【问题讨论】:
-
print(cases)以查看您不想在 y 轴上绘制的列名。 -
在
ax.plot(x, y)hold(True)之后使用 -
我试过 ax.plot(x, y).hold(True) 但返回 AttributeError: 'list object has no attribute 'hold'。
-
@ImportanceOfBeingErnest 是的,就是这样。 “日期”是案例中的列之一,这就是问题所在。刚刚在 for 循环中添加了一个 if 语句,仅当大小写不等于“日期”时才绘制。谢谢!
标签: python matplotlib