在上一篇介绍了直方图的前五个参数。其实直方图一共有十几个参数。剩下的参数在这篇文章中解释的很清楚,让大家明白直方图怎么画是透明的。bottom参数的含义也很直观。底部的含义是指条形底部开始的位置。该参数接受一个标量和一个序列,或者None,默认为None,如果是标量,所有柱的底部将从相同的值开始,如果是序列,可以指定每个柱的底部不一致。fig=plt.figure(figsize=(16,4))pic1=fig.add_subplot(131)plt.hist(data,bins=10)plt.title("bottomdefaultNone")pic2=fig.add_subplot(132)plt.hist(data,bins=10,bottom=10)#bottom=10,表示所有bar的底部从10开始,默认从0开始plt.title("bottom=10")pic3=fig.add_subplot(133)plt.hist(data,bins=10,bottom=np.array([21,20,13,17,22,32,23,15,22,15]))#底部是序列,sequencelength比bar的数字相同,表示每条bar的底部从哪里开始plt.title("bottomvalueisasequence");上图是bottom参数不同取值时绘制的不同直方图,第一张图和第二张图看起来是一样的,但是仔细观察可以发现,两张图的y轴的起点是不一样的。第一张图的起始点是0,第二张图的起始点是10,因为bottom参数设置为10;而第三张图底部的参数设置的sequence,sequence的长度与直方图中的组数相同,即每条bar的起点不同。这取决于哪种设置更好。具体业务需求。histt??ype参数histt??ype参数控制时间直方图中条形的呈现。它接收的参数是固定的字符串,其中常见的有以下两种形式:fig=plt.figure(figsize=(9,4))pic1=fig.add_subplot(121)plt.hist(data,bins=10,histt??ype="bar")plt.title('histt??ype="bar"')pic2=fig.add_subplot(122)plt.hist(data,bins=10,histt??ype="step")#histt??ype默认参数为"bar",即一个bar,可以指定plt.title('histt??ype="step"');如果需要将折线图和柱状图绘制到一张图片中,可以考虑设置bar的形式.align参数align参数控制bar的位置,可以接收的参数也是指定的字符串。通常大家都使用默认值"mid",也就是中间,这样直方图中的bar就会在前后临界点位置的中间,最常见的就是:fig=plt.figure(figsize=(16,4))pic1=fig.add_subplot(131)plt.hist(data,bins=10,align="left")plt.xticks([150.,152.9,155.8,158.7,161.6,164.5,167.4,170.3,173.2,176.1,179.],旋转=30)plt.title("align='left'")pic2=图。add_subplot(132)plt.hist(data,bins=10,align="right")plt.xticks([150.,152.9,155.8,158.7,161.6,164.5,167.4,170.3,173.2,176.1,179.],rotation=30)plt.title("align='right'")pic3=fig.add_subplot(133)plt.hist(data,bins=10,align="mid")plt.xticks([150.,152.9,155.8,158.7,161.6,164.5,167.4,170.3,173.2,176.1,179.],rotation=30)plt.title("align='mid'");由于原始数据和分箱规则都没有改变,所以三个直方图非常相似,区别在于x轴。为了直观看出差异,特意在x轴上加上了各组的临界值。如果仔细看,可以看到只有最后一张图是我们常见的直方图。前两个条形状的位置是偏移的。方向参数熟悉柱状图的朋友对这个参数可能不会陌生。它是一个控制条形方向的参数。它接收一个特定的字符,即条的方向是垂直还是水平。一般都是默认绘制的。它们都在垂直方向。如果需要水平直方图,直接设置该参数即可。它接收的参数是指定的字符串,指示条的方向:fig=plt.figure(figsize=(9,4))pic1=fig.add_subplot(121)plt.hist(data,bins=10)#defaultbar图中的方向为垂直方向plt.title('orientationdefaultsto"vertical"')pic2=fig.add_subplot(122)plt.hist(data,bins=10,orientation='horizo??ntal')#orientation='horizo??ntal'表示bar为水平方向plt.title('orientation="horizo??ntal"');参数中可选的两个字符是垂直或水平。从字面上看,rwidth参数与宽度有关,确实如此。该参数可以设置bar的宽度并接收值,但是它设置的宽度是相对于默认宽度的,重置后的宽度是原始宽度的分数。具体看代码:fig=plt.figure(figsize=(9,4))pic1=fig.add_subplot(121)plt.hist(data,bins=10)#rwidth控制bar的相对宽度,如果不指定,会自动计算plt.title('rwidthdefaultsto"None"')pic2=fig.add_subplot(122)plt.hist(data,bins=10,rwidth=0.8)#指定相对宽度barplt.title('rwidth=0.8');如果未设置,直方图图中的条之间没有间隙。当我设置rwidth为0.8时,bar的宽度只有原来宽度的80%,bar之间会有空隙。log参数log参数控制是否设置刻度为对数刻度,接受布尔值,默认为False,执行正常刻度,一旦设置为True:fig=plt.figure(figsize=(9,4))pic1=fig.add_subplot(121)plt.hist(data,bins=10)plt.title('logdefault"False"')pic2=fig.add_subplot(122)plt.hist(data,bins=10,log=True)#Histogram轴将设置为对数刻度。plt.title('log=True"');设置对数刻度后,虽然分组情况没有改变,但是分布发生了变化,如果设置了这个参数,最好在title或者其他部分注明。color参数和X参数可以说是相当熟悉了,在很多函数中都有,意思是设置图形的颜色,没错,确实是设置颜色,记住我们还有一个第一个参数我们没有解释,所以这里和颜色一起解释。目前,我们只有一组数据。现在假设我们有两所学校学生的身高数据。嗯,这是第二所学校学生的身高:data1=np.random.randint(150,180,200)data1的输出:array([164,171,172,161,171,175,161,170,159,163,154,162,156,158,160,156,163,167,170,168,163,171,174,161,156,167,165,169,162,176,167,157,157,169,160,177,162,154,163,168,155,177,151,155,179,166,170,168,158,167,156,170,163,157,172,169,156,171,155,160,177,164,157,160,173,175,164,168,171,158,163,162,167,167,169,155,175,171,162,174,165,179,167,179,168,157,151,151,171,170,168,165,167,179,153,177,165,155,153,157,162,167,173,161,171,159,165,152,160,172,154,157,176,152,171,161,169,154,171,150,158,164,150,170,153,162,150,174,150,176,167,171,164,170,171,163,162,164,174,157,179,166,150,170,166,161,155,175,163,156,152,159,168,158,176,159,158,169,155,166,151,163,177,154,170,152,167,172,170,163,161,177,164,160,157,167,163,177,169,162,166,158,156,168,169,168,159,159,154,169,168,169,156,165,173,175,169,156,158,154])这里是不是有点清楚了,直方图不仅可以用于绘制一组数据,也可以绘制多组数据。参数x可以接收多组数据。如果有多组数据,需要将多组数据打包在一起,作为一个整体传递给参数x:fig=plt.figure(figsize=(16,4))pic1=fig.add_subplot(131)plt.hist(data,bins=10)plt.title("colordefaultNone")pic2=fig.add_subplot(132)plt.hist(data,bins=10,color="r")#设置颜色为红色plt.title("color="r"")pic3=fig.add_subplot(133)plt.hist([data,data1],bins=10,color=["c","orange"])#颜色的值是一个序列,每个数据集对应一种颜色,颜色序列的长度与数据集的个数一致plt.title("颜色的值是一个序列");可以看到,如果只有一组数据,color参数只会接受一种颜色规范。如果有多组数据,可以指定每组数据的颜色。具体需要注意的地方已经在代码中注明了。label参数label参数并不是一个陌生的参数。这是标签的设置。接收到的字符串没什么特别的,但是需要注意的是,如果设置了这个参数,记得调用plt.lenged()来显示图例。如果您不调用Labels,即使它们已设置,也不会作为图例出现在图表中。除了在直方图函数中直接设置label参数外,还可以在plt.lenged()中设置显示图例。具体区别看代码:fig=plt.figure(figsize=(11,4))pic1=fig.add_subplot(121)plt.hist([data,data1],bins=10,color=["c""orange"],label=["data","data1"])plt.legend()plt.title('在hist函数中设置label参数')pic2=fig.add_subplot(122)plt.hist([data,data1],bins=10,color=["c","orange"])plt.legend(["data","data1"])plt.title('在图例函数中设置label参数');效果是一样的。stacked参数的字面意思也很直观,表示是否入栈,接收一个布尔值。需要注意的是,如果只用一个数据集来作图,这个参数无论设置什么都没有效果。如果要堆叠至少两个数据集以显示差异:fig=plt.figure(figsize=(9,4))pic1=fig.add_subplot(121)plt.hist([data,data1],stacked=False)#默认多组数据并排排列plt.title('stackeddefaultsto"False"')pic2=fig.add_subplot(122)plt.hist([data,data1],stacked=True)#多组ofdata相互堆叠plt.title('stacked=True"');区别是不是很明显,堆叠的意思也很容易理解吧?以上就是直方图所有参数设置的解释功能,希望能帮助大家全面掌握如何绘制符合实际需要的直方图。
