python填充图形,Python画曲线图

  python填充图形,Python画曲线图

  这篇文章主要介绍了大蟒面积图之曲线图的填充,文章围绕主题的相关资料展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助

  

目录
基础用法案例复杂的填充_介于(案例来源官网)哪里和插值哪里插值用法:

  Axes.fill_between(x,y1,y2=0,where=None,interpolate=False,step=None,*,data=None,**kwargs)

  参数说明:

  

基础用法

  将matplotlib.pyplot作为血小板计数导入

  将数组作为铭牌导入

  x=[1,2,3,4,5]

  y1=[1,4,9,16,25]

  y2=9,9,9,9

  图,(ax1,ax2)=plt.subplots(1,2)

  ax1.fill_between(x,y1,alpha=.5,线宽=0)

  ax1.set_title(填充x,y1之间)

  ax2.fill_between(x,y2,alpha=.5,线宽=1)

  ax2.set_title(填充x,y2之间)

  plt.show()

  当然这样时没有多大意义的,只是想展示出一个比较明确的填充,类似于区域全部填充颜色

  

案例

  将matplotlib.pyplot作为血小板计数导入

  将数组作为铭牌导入

  种子(1)

  x=np.linspace(0,8,16)

  y1=3 ^ 4 * x/8 NP。随机的。均匀(0.0,0.5,len(x))

  y2=1 ^ 2 * x/8 NP。随机的。均匀(0.0,0.5,len(x))

  fig,ax=plt.subplots()

  ax.fill_between(x,y1,y2,alpha=.5,线宽=0)

  ax.plot(x,(y1 y2)/2,线宽=2)

  ax.set(xlim=(0,8),xticks=np.arange(1,8),

  ylim=(0,8),yticks=np.arange(1,8))

  plt.show()

  

复杂的fille_between(案例来源官网)

  将数组作为铭牌导入

  将matplotlib.pyplot作为血小板计数导入

  Nsteps,Nwalkers=100,250

  t=np.arange(Nsteps)

  #随机行走步骤的(Nsteps x Nwalkers)阵列

  S1=0.004 0.02 * NP。随机的。randn(n步,n步行者)

  S2=0.002 0.01 * NP。随机的。randn(n步,n步行者)

  #随机漫步位置的(Nsteps x Nwalkers)阵列

  X1=S1.cumsum(轴=0)

  X2=S2。累计(坐标轴=0)

  # n步骤长度数组经验平均值和两者的标准偏差

  #随着时间推移的人口数量

  mu1=X1.mean(轴=1)

  sigma1=X1.std(轴=1)

  mu2=X2.mean(轴=1)

  sigma2=X2.std(轴=1)

  #画出来!

  fig,ax=plt.subplots(1)

  ax.plot(t,mu1,lw=2,

   label=mean population 1)

  ax.plot(t, mu2, lw=2, label=mean population 2)

  ax.fill_between(t, mu1+sigma1, mu1-sigma1, facecolor=C0, alpha=0.4)

  ax.fill_between(t, mu2+sigma2, mu2-sigma2, facecolor=C1, alpha=0.4)

  ax.set_title(rrandom walkers empirical $\mu$ and $\pm \sigma$ interval)

  ax.legend(loc=upper left)

  ax.set_xlabel(num steps)

  ax.set_ylabel(position)

  ax.grid()

  

  

  

where和interpolate

  

  

where

  定义从何处排除要填充的某些水平区域。填充区域由坐标x[其中]定义。更准确地说,如果其中[i]和其中[i+1],则在x[i]和x[i+1]之间填充。请注意,此定义意味着where中两个假值之间的孤立真值不会导致填充。由于相邻的假值,真实位置的两侧仍保持未填充状态。

  

import numpy as np

  import matplotlib.pyplot as plt

  fig, ax = plt.subplots()

  x = np.arange(0, 4 * np.pi, 0.01)

  y = np.sin(x)

  ax.plot(x, y, color=black)

  ax.fill_between(x, y, 0, where=(x>4)&(x<5),color=cyan, alpha=0.5)

  plt.show()

  

  

  

interpolate

  在语义上,where通常用于y1>y2或类似的词。默认情况下,定义填充区域的多边形节点将仅放置在x阵列中的位置。这样的多边形无法描述上述靠近交点的语义。包含交叉点的x截面仅被剪裁。
将插值设置为True将计算实际交点,并将填充区域延伸到此点。

  

import numpy as np

  import matplotlib.pyplot as plt

  x = np.array([0, 1, 2, 3])

  y1 = np.array([0.8, 0.8, 0.2, 0.2])

  y2 = np.array([0, 0, 1, 1])

  fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True)

  ax1.set_title(interpolation=False)

  ax1.plot(x, y1, o--)

  ax1.plot(x, y2, o--)

  ax1.fill_between(x, y1, y2, where=(y1 > y2), color=C0, alpha=0.3)

  ax1.fill_between(x, y1, y2, where=(y1 < y2), color=C1, alpha=0.3)

  ax2.set_title(interpolation=True)

  ax2.plot(x, y1, o--)

  ax2.plot(x, y2, o--)

  ax2.fill_between(x, y1, y2, where=(y1 > y2), color=C0, alpha=0.3,

   interpolate=True)

  ax2.fill_between(x, y1, y2, where=(y1 <= y2), color=C1, alpha=0.3, interpolate=True)

  fig.tight_layout()

  

  

  

step

  包含参数为三个{‘pre’,‘post’,‘mid’}
如果填充应为阶跃函数,即x之间的常数,则定义阶跃。该值确定阶跃发生的位置:

  

  • pre:y值从每个x位置持续向左,即间隔(x[i-1],x[i]]的值为y[i]。
  • post:y值从每个x位置持续向右,即区间[x[i],x[i+1])的值为y[i]。
  • mid:步数出现在x位置的中间。

  

import numpy as np

  import matplotlib.pyplot as plt

  a = np.linspace(0,2*3.14,50)

  b = np.sin(a)

  plt.figsize=((12,6))

  plt.subplot(131)

  plt.fill_between(a, b, 0, where = (a > 2) & (a < 5), color = green, step=pre)

  plt.plot(a,b)

  plt.title(step=pre)

  plt.subplot(132)

  plt.fill_between(a, b, 0, where = (a > 2) & (a < 5), color = cyan, step=post)

  plt.plot(a,b)

  plt.title(step=post)

  plt.subplot(133)

  plt.fill_between(a, b, 0, where = (a > 2) & (a < 5), color = red, step=mid)

  plt.plot(a,b)

  plt.title(step=mid)

  plt.show()

  

  偏移会有点不一样,因为函数的缘故,偏移不太明显

  到此这篇关于python面积图之曲线图的填充的文章就介绍到这了,更多相关python曲线填充内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: