当前位置: 首页 > 面试题库 >

填充matplotlib线图的上方/下方

缑桐
2023-03-14
问题内容

我正在使用matplotlib创建简单的线图。我的图是一个简单的时间序列数据集,其中我沿x轴有时间,而我在y轴上有测量的值。y值可以具有正值或负值,如果y值>
0,则我想用蓝色填充行上方和下方的颜色,如果y值<0,则我要填充红色。这是我的绘图:

在此处输入图片说明

如您所见,我可以正确地填入蓝色,但是我不能正确填入红色。这是我正在使用的基本代码:

plt.plot(x, y, marker='.', lw=1)
d = scipy.zeros(len(y))
ax.fill_between(xs,ys,where=ys>=d, color='blue')
ax.fill_between(xs,0,where=ys<=d, color='red')

如何获得从y值正向x轴到x轴的区域为蓝色,从y值负向x轴到x轴的区域为红色?谢谢您的帮助。


问题答案:

您提供的代码段应按以下方式更正:

plt.plot(x, y, marker='.', lw=1)
d = scipy.zeros(len(y))
ax.fill_between(xs, ys, where=ys>=d, interpolate=True, color='blue')
ax.fill_between(xs, ys, where=ys<=d, interpolate=True, color='red')

fill_between方法至少使用两个参数xy1,同时还具有一个y2默认值为0的参数。该方法将填充指定-
values之间y1和之间的区域。y2``x

为什么你没有得到的x轴下方的任何填充究其原因,是由于这样的事实,你已指定的fill_between方法应填写之间的区域y1=0y2=0,即
区域。要确保填充不仅出现在 显式
x值上,请指定方法应按进行插值y1以找到与的交集y2,这是通过interpolate=True在方法调用中指定来完成的。



 类似资料:
  • 我正在绘制一条黑体曲线,并希望填充曲线下3到5微米范围内的区域。但是,我不知道如何在这里使用或命令

  • 我是matplotlib的初学者,如果这看起来像一个愚蠢的问题,我很抱歉。 我有一个csv文件,其中包含深度学习模型不同层中单个神经元的权重值。由于我的模型中有四个层,因此文件结构如下所示: weight_1weight_2weight_n weight_1weight_2weight_n weight_1weight_2weight_n weight_1weight_2weight_n 正如你所

  • 如何更改iOS 15中开始出现的节标题上方的额外填充?

  • 在多列容器中,如果显式设置了容器的高度,往往会由于内容不足,而导致最后面的列没有内容填充,就会出现各列高度不一致的情况。 这种情况下,就可以通过 column-fill属性来控制各列内容的填充方式,可选值为 auto | balance。balance 表示各列的内容均衡填充,auto 表示各列的内容自动填充。 由于多列布局还没有成为正式标准,各浏览器的默认填充方式也没有得到统一。Firefox

  • 主要内容:绘制单条折线,绘制多条折线图折线图(line chart)是我们日常工作、学习中经常使用的一种图表,它可以直观的反映数据的变化趋势。与绘制柱状图、饼状图等图形不同,Matplotlib 并没有直接提供绘制折线图的函数,因此本节着重讲解如何绘制一幅折线图。 绘制单条折线 下面示例是关于 小牛知识库用户活跃度的折线图: 显示结果如下: 绘制多条折线图 当学习完如何绘制单条折线的绘制后,再绘制多条折线也变的容易,只要准备好绘制多条

  • 如何在IPython笔记本内的Matplotlib中将图例添加到xy线图中?我目前的尝试: 这样做,我得到以下错误: /Users/mc/.virtualenvs/kaggle/lib/python2.7/site-packages/matplotlib/legend.py:613:用户警告:图例不支持[]使用代理艺术家代替。 http://matplotlib.sourceforge.net/u

  • 是否有任何方法可以使用android: fillViewport="true"和一个子LinearLayout填充所有视图,当LinearLayout的内容不够高时? 到目前为止,在ScrollView中的LinearLayout中,我们必须使用Android:layout _ height = " wrap _ content "。我们可以添加一些东西来填充所有的滚动视图吗?