【发布时间】:2015-08-10 03:15:44
【问题描述】:
matplotlib 折线图的值数组长度可能不规则,例如:
[18,17,0,0,2]
[6,4,0,0]
[3]
这些是时间线上的值,最后一个是最新的,每个值对应于一周。因此,这意味着第二个用户比第一个晚一周加入,而最后一个用户只在上周加入。
为了绘制折线图,我用 None 值填充较小的数组(与fill_between 并不真正相关)。
[18, 17, 0, 0, 2]
[None, None, None, None, 3]
[None, 6, 4, 0, 0]
我正在使用interpolate=True,因为如果值变为零,我需要填充曲线。
但是,这会产生意想不到的效果,对于后来开始的人来说,填充也会进行插值,从 0 开始到实际值。
这可以吗?我查看了docs,它说明了 where 数组。
这是给定图表的 where 数组的结构:
[True, True, False, False, True, False]
[False, True, True, False, False, False]
[False, False, False, False, True, False]
如您所见,我将第二个值行的第一个 where 元素设置为 False,但由于“interpolate=True”,它将开始填充...
(颜色代码:第一排蓝色,第二排绿色,第三排红色)
希望任何天使都可以帮助解决这个问题......
这是填充的实际代码:
for i, values in enumerate(time_series):
ax.plot(x, y[i], ',-', label=label, color=linecolor, markersize=8, fillstyle="full",linewidth=1.5, clip_on=True, zorder=200)
ax.fill_between(x, 0, zero_y, where=where, color=fillcolors[i], alpha=0.8, edgecolor="white", zorder=zorder[i], interpolate=True)
请注意,fill_between 在输入 None 值时实际上崩溃了...我需要将 None 值“转换”为 0...这可能会使问题更加复杂...
【问题讨论】:
-
尝试将
None与np.nan相匹配,这是浮点“非数字”填充值
标签: python matplotlib