python绘制分布直⽅图_python可视化:matplotlib绘制直⽅图
进阶篇!
在上篇⽂章中介绍了直⽅图的前五个参数,实际上直⽅图⼀共有⼗⼏个参数,剩下的参数利⽤这篇⽂章解释清楚,让⼤家能够将如何绘制直
⽅图理解的透透的。
bottom参数
这个参数的含义也很直观,底部的意思,指的是条形的底从哪⾥开始。这个参数接收标量和序列,或者None,默认为None,如果是标量,
则所有条形的底都从同⼀个数值处开始,如果为序列,则可以指定每个条形的底不⼀致。
fig = plt.figure(figsize=(16,4))
pic1 = fig.add_subplot(131)
plt.hist(data,bins = 10)
plt.title("bottom默认None")
pic2 = fig.add_subplot(132)
plt.hist(data,bins = 10, bottom=10) # bottom=10,表⽰所有条形的底部从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])) # bottom为序列,序列长度于条形的数量⼀致,表⽰每个条的底部从哪⾥开始plt.title("bottom取值为序列");
上图是当bottom参数不同取值时绘制出来不同的直⽅图,第⼀幅图和第⼆幅图看起来长的⼀样,但是仔细观察下就能发现两幅图y轴的起
始点时不⼀样的,第⼀幅图的起点时0.第⼆幅图的起点是10,因为bottom参数设置的为10;⽽第三幅图bottom的参数设置的序列,序列
matplotlib中subplot的长度和直⽅图的组数⼀致,即每个条形的起始点都不同,具体设置哪种⽐较好,还是要看具体的业务需求哦。
histtype参数
histtype参数控制的时直⽅图中条形的展现⽅式,它接收的参数是固定的字符串,其中常见的是以下两种形式:
fig = plt.figure(figsize=(9,4))
pic1 = fig.add_subplot(121)
plt.hist(data,bins = 10, histtype = "bar")
plt.title(' histtype = "bar"')
pic2 = fig.add_subplot(122)
plt.hist(data,bins = 10, histtype = "step") #  histtype默认参数为”bar“,即条形,可以进⾏指定
plt.title(' histtype = "step"');
如果需要将折线图和直⽅图绘制到⼀副图中,可以考虑对条形的形式进⾏设置。
align参数
align参数控制的是条形的位置,能够接收的参数也是指定的字符串,通常⼤家都⽤默认值"mid",即中间,这样直⽅图中的条形会居于前后临界点的中间位置,是最常见的⼀种:
fig = plt.figure(figsize=(16,4))
pic1 = fig.add_subplot(131)
plt.hist(data,bins = 10, align = "left")
plt.title("align ='left'")
pic2 = fig.add_subplot(132)
plt.hist(data,bins = 10, align = "right")
plt.title("align ='right'")
pic3 = fig.add_subplot(133)
plt.hist(data,bins = 10, align = "mid")
plt.title("align ='mid'");
由于原数据和分箱规则没有变化,所以三个直⽅图很相近,区别在于x轴上,这⾥为了能直观的看出区别,特意将每组的临界值添加到了x 轴,仔细查看能够看出只有最后⼀个图才是我们常见的直⽅图,前两个条形的位置都有偏移。
orientation参数
对条形图⽐较熟悉的朋友可能对这个参数并不陌⽣,它是控制条形⽅向的参数,接收的是特定的字符,即条形的⽅向是垂直的还是⽔平的,⼀般默认绘制的都是垂直⽅向的,如果需要横向的直⽅图,直接设置这个参数就好。它接收的参数是指定的字符串,表明条形⽅向:
plt.hist(data,bins = 10) #默认条形⽅向为垂直⽅向
plt.title('orientation默认"vertical"')
pic2 = fig.add_subplot(122)
plt.hist(data,bins = 10,orientation = 'horizontal') #  orientation = 'horizontal'表⽰条形为⽔平⽅向
plt.title('orientation = "horizontal"');
参数中可选的两个字符即是垂直还是⽔平。
rwidth参数
从字⾯上看,这个参数是和宽度有关的,事实也的确是这样。这个参数可以设置条形的宽度,接收数值,但是它设置的宽度是相对于默认宽度⽽⾔的,重新设置的宽度是原宽度的⼏分之⼏,我们具体看⼀下代码:
fig = plt.figure(figsize=(9,4))
pic1 = fig.add_subplot(121)
plt.hist(data,bins = 10) #rwidth控制条形的相对宽度,不进⾏指定,⾃动计算
plt.title('rwidth默认"None"')
pic2 = fig.add_subplot(122)
plt.hist(data,bins = 10,rwidth=0.8) # 指定条形的相对宽度
plt.title('rwidth=0.8');
如果不进⾏设置,直⽅图的各个条形之间是没有空隙的,当我将rwidth设置成0.8之后,条形的宽度就只有原宽度的80%,条形之间也会出现缝隙。
log参数
log参数控制是否将刻度设置成对数刻度,接收布尔值,默认为False,进⾏普通刻度,⼀旦设置为True:
plt.title('log默认"False"')
pic2 = fig.add_subplot(122)
plt.hist(data,bins = 10,log=True) # 直⽅图轴将设置为对数刻度。
plt.title('log=True"');
设置成对数刻度后,虽然分组情况没有变,但是分布状况还是发⽣了变化,如果设置了该参数,最好在标题或其他部分标注提⽰⼀下。color参数和X
这个参数可以说是相当熟悉,很多函数中都有,表⽰对图形的颜⾊进⾏设置,没错的确是设置颜⾊,想起我们还有⼀个最开始的参数没有讲解,就在这⾥和color⼀起讲解了。
⽬前我们只有⼀组数据,现在呢假设有了两个学校学⽣的⾝⾼数据,喏,这就是第⼆个学校的学⽣⾝⾼了:
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:
plt.title("color默认None")
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"])
# color取值为序列,每个数据集对应⼀种颜⾊,color序列的长度与数据集个数⼀致
plt.title("color取值为序列");
能够看到,如果只有⼀组数据,color参数也就只接收⼀个颜⾊指定,如果是多组数据,可以对每个数据集的颜⾊进⾏指定,具体需要注意的点已经在代码中备注了哦。
label参数
label参数也不是陌⽣的参数,是对标签的设定,接收的是字符串,并没有什么特殊,但是需要注意的是如果设置了这个参数,记得调⽤plt.lenged()显⽰图例,如果不调⽤即使设置了标签也不能作为图例显⽰在图形中。⽽显⽰图例除了直接在直⽅图函数中设置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('legend函数中设置label参数');
效果是⼀样的。
stacked参数

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。