Python Matplotlib制作boxplot()函数详解解答

  小编写这篇文章的主要目的,是教给大家python中的相关知识,主要是教给大家,怎么使用python matplotlib,以及如何进行绘制箱线图,具体代码,下文给大家做一个解答。

  箱线图

  箱线图一般用来展现数据的分布,如上下四分位值、中位数等,也可以直观地展示异常点。Matplotlib提供了boxplot()函数绘制箱线图。

 import matplotlib.pyplot as plt
  _=plt.boxplot(range(10))#10个数,0-9
  plt.show()

0.png

  箱线图虽然看起来简单,但包含的数据信息非常丰富。在上图中,橙色的线条表示中位数,中间条形的上下边界分别对应上四分位数(75%的数据都小于该值)与下四位分数(25%的数据小于该值),从条形延伸出两条线段,两条线段的终点表示数据的最大值和最小值。

  import numpy as np
  print(np.median(np.arange(10)))#中位数
  print(np.percentile(np.arange(10),25))#下4分位数,也叫第1分位数
  print(np.percentile(np.arange(10),75))#上4分位数,也叫第3分位数

  4.5
  2.25
  6.75
  Process finished with exit code 0

  boxplot()函数还提供了丰富的自定义选项

  plt.boxplot(x,notch=None,sym=None,vert=None,
  whis=None,positions=None,widths=None,
  patch_artist=None,meanline=None,showmeans=None,
  showcaps=None,showbox=None,showfliers=None,
  boxprops=None,labels=None,flierprops=None,
  medianprops=None,meanprops=None,
  capprops=None,whiskerprops=None)

  x:绘图数据。

  ●notch:是否以凹口的形式展现箱线图,默认非凹口。

  ●sym:指定异常点的形状,默认为+号显示。

  ●vert:是否需要将箱线图垂直放,默认垂直放。

  ●whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差。

  ●positions:指定箱线图位置,默认为[0,1,2.…]。

  ●widths:指定箱线图宽度,默认为0.5。

  ●patch _ artist:是否填充箱体的颜色。

  ●meanline:是否用线的形式表示均值,默认用点表示。

  ●showmeans:是否显示均值,默认不显示。

  ●showcaps:是否显示箱线图顶端和末端两条线,默认显示。

  ●showbox:是否显示箱线图的箱体,默认显示。

  ●showfliers:是否显示异常值,默认显示。

  自媒体培训

  ●boxprops:设置箱体的属性,如边框色、填充色等。

  ●labels:为箱线图添加标签,类似于图例的作用。

  ●filerprops:设置异常值的属性,如异常点的形状、大小、填充色等。

  ●medianprops:设置中位数的属性,如线的类型、粗细等。

  ●meanprops:设置均值的属性,如点的大小、颜色等。

  ●capprops:设置箱线图顶端和末端线条的属性,如颜色、粗细等。

  ●whiskerprops:设置须的属性,如颜色、粗细、线的类型等。

  箱线图通常用在多组数据比较时

  下面代码展示了3组简单数据的箱线图,添加凹口、均值点、颜色以及每组的标签。

  import matplotlib.pyplot as plt
  a=plt.boxplot([range(10),range(20),range(30)],
  patch_artist=True,
  boxprops={'color':'blue'},
  notch=True,showmeans=True,
  labels=['A','B','C'])
  plt.show()

1.png

  补充:plt.boxplot()函数绘制箱图、常用方法

  实战

  def plt_box_iamge(df):
  """
  snrr的五个范围为[5,10)、[10,15)、[15,20)、[20,30)、[30-),按照五个snrr范围计算对应redchi的箱图
  :param df:包含snrr以及redchi的csv数据(dataFrame)。
  :return:
  """
  #根据snrr范围对redchi进行筛选。
  df1=df.loc[df['lam_snrr']>=5]
  redchi_1=df1.loc[df1['lam_snrr']<10].redchi
  df2=df.loc[df['lam_snrr']>=10]
  redchi_2=df2.loc[df2['lam_snrr']<15].redchi
  df3=df.loc[df['lam_snrr']>=15]
  redchi_3=df3.loc[df3['lam_snrr']<20].redchi
  df4=df.loc[df['lam_snrr']>=20]
  redchi_4=df4.loc[df4['lam_snrr']<30].redchi
  redchi_5=df.loc[df['lam_snrr']>=30].redchi
  #绘图
  ax=plt.subplot()
  ax.boxplot([redchi_1,redchi_2,redchi_3,redchi_4,redchi_5])
  #设置轴坐标值刻度的标签
  ax.set_xticklabels(['5<=snrr<10','10<=snrr<15','15<=snrr<20','20<=snrr<30','30<=snrr'],fontsize=8)
  #保存图片
  plt.savefig('./images/box.jpg')
  plt.show()
  if __name__=='__main__':
  df=pd.read_csv('./inputfile/lamost6w_new.csv')
  df_sc=screening(df)#筛选数据(lamost数据应该在正常值范围内,不然因为数值差过大会导致绘制不出图像!)
  plt_box_iamge(df_sc)

  3.png

      常用方法

  import matplotlib.pyplot as plt
  import numpy as np
  np.random.seed(100)
  data=np.random.normal(size=(1000,4),loc=0,scale=1)
  ax=plt.subplot()
  ax.boxplot(data)#绘图
  ax.set_xlim([0,5])#设置x轴值的范围rotation=30
  #ax.set_xticks()#自定义x轴的值
  ax.set_xlabel("xlabel")#设置x轴的标签
  ax.set_xticklabels(['A','B','C','D'],rotation=30,fontsize=10)#设置x轴坐标值的标签旋转角度字体大小
  ax.set_title("xcy")#设置图像标题
  ax.legend(labels=['A','B','C','D'],loc='best',)#增加图例
  ax.text(x=0.2,y=3.5,s="test",fontsize=12)#增加注
  plt.show()

  关于python箱线图就为大家解答到这里了,希望可以给各位读者带来帮助。

原创文章,作者:网友投稿,如若转载,请注明出处:https://www.cloudads.cn/archives/3999.html

发表评论

登录后才能评论