【发布时间】:2019-08-30 17:17:40
【问题描述】:
所以按照教程,我尝试使用以下代码创建图表:
time_values = [i for i in range(1,100)]
execution_time = [random.randint(0,100) for i in range(1,100)]
fig = plt.figure()
ax1 = plt.subplot()
threshold=[.8 for i in range(len(execution_time))]
ax1.plot(time_values, execution_time)
ax1.margins(x=-.49, y=0)
ax1.fill_between(time_values,execution_time, 1,where=(execution_time>1), color='r', alpha=.3)
这不起作用,因为我收到一个错误,说我无法比较列表和 int。 但是,我随后尝试:
ax1.fill_between(time_values,execution_time, 1)
这给了我一个图表,其中包含执行时间和 y=1 线之间的所有区域,已填充。因为我希望 y=1 线上方的区域被填充,左下方的区域没有阴影,我创建了一个名为 threshold 的列表,并用 1 填充它,以便我可以重新创建比较。不过,
ax1.fill_between(time_values,execution_time, 1,where=(execution_time>threshold)
和
ax1.fill_between(time_values,execution_time, 1)
创建完全相同的图表,即使执行时间值确实超过 1。
我感到困惑有两个原因: 首先,在我正在看的教程中,老师能够在fill_between函数中成功地比较一个列表和一个整数,为什么我不能做到这一点? 其次,为什么 where 参数不能识别我要填充的区域?即,为什么在 y=1 和执行时间的值之间的区域会出现图形阴影?
【问题讨论】:
-
有了minimal reproducible example,一切都会轻松很多。
-
我现在做了一些修改,这样代码应该基本上可以运行了。
标签: python-3.x matplotlib