开发者学堂课程【Python 常用数据科学库:条形图细节】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/546/detail/7500
条形图细节
内容介绍
一、画误差棒
二、指定不同的数据指标
一、画误差棒
1、在条形图当中,可以把误差棒再画出来。可以指定这个东西,一个是要画的一个指标,画三个指标123,然后还可以指定误差的范围 variance—— 0.2, 0.4, 0.5,最后再把 bar_label 写出来,bar_label 就是一会指定的第一个注,第二、三个柱,分别叫 bar1,bar2,bar3,然后就画这个图,画这个图的时候可以指定间隔或者叫做底下的位置,可以指定成 position,它是等于 list 结构,然后 range 一下,bar_label 有几个就需要几个 position,把 bar_label 传进去这可以了,这个就是位置,然后把图实际画出来,把位置 position 传进去,再把 mean_value 传进去,把误差棒表示成variance。把位置写完了之后,还得去设置它的高度,因为一会要进行一个限制,所以先把高度拿过来,设置它最大的高度,用 max_y 设置高度,max 里传进来一个 zip值,然后把 mean_value 和 variance 这两个指标传进来,传进来之后,这个就是做了一个 max_y。然后要去做它的限制,plt 拿过来,然后在 y 轴做一个限制 limit,写一个范围从零开始,然后最大到这样的一个范围:max 里传进来 max_y,有两个指标一个是 mean_value,一个 variance,mean_value 相当于它的一个指标,variance 相当于它可以浮动的一个范围,最大的就是它俩加在一起,如果不想顶格写,可以乘个1.2,给它上面稍微留一些空白区域,这是限制了一个区域,接下来再写上 y label, y 轴叫 variable y,然后再指定它的 x 轴,里面写上 x 的 position 位置,位置上就给它写上 bar1,bar2,bar3 就可以了,这是 x 的一个 ticks
mean_values=[1,2,3]
variance =[0,2,0.4,0.5]
bar_label=[ bar1,bar2,bar3]
x_pos= list(range(len(bar_label)))
max_y=max(zip (mean values, variance))
plt.ylim([0, (max_y[0] +max_y[1])*1.2])
plt.ylabel(‘variable y’)
plt.xticks(x_pos, bar_labe)
然后直接执行一下, 这样图就出来了
出来之后看着不太好看,因为这两个都是蓝色的,可以给它稍微设计一下,看一下当前的 variance,在这里指定一下透明程度,指定成0.3再来看一下,这样这个图可以显示出来了
上面画的小柱一个误差棒,整个图是一个条形图,这个就是整体结构是长什么样子的,然后横着画竖着画都是一样的。
二、指定不同的数据指标
1、在画 ba r的时候,也可以再去给它指定不同的数据指标。指定一个 x1, x1它等于 np.array,随便传进来一些数123,这是 x1,然后还有个 x2,x2 等于 np.array 里面再随便传进来一些数233,这是 x2。再指定 bar_labels,现在是有三个数bar1,bar2,bar3,这是 labels。然后把这个图指定出来,figure 里传进来 figsize,一般等于8,6就足够了,先把这些东西基本写完,然后构造一个 y_pos,之所以是 y 不是x,是因为一会要横着去画,y_pos 等于 np.arange,一共三个数据,直接指定3就可以了,然
然后再写一下 y_pos,这是先把位置写好,然后再去画这个图,plt.bar 一下,把这个图画出来,需要把 y_pos 传进去,再传 x1,传进来之后,再指定个颜色,透明程度等于0.5,然后看 show 一下
x1= np.array([1,2,3])
x2 = np.array([2,2,3])
bar_labels=['bat1',’bar2’,'bar3']
fig = plt.figure(figsize=(8,6))
y_pos = np.arange(len(x1))
y_pos=[x for x in y_pos]
plt.barh(y_pos,x1,color='g',alpha=0.5)
plt.show()
执行图片就显示出来了
2、再画一个,把 x2传进来,画一个负的 x2让它俩是一个背靠背的形式
x1= np.array([1,2,3])
x2 = np.array([2,2,3])
bar_labels=['batl',’bar2",'bar3']
fig = plt.figure(figsize=(8,6))
y_pos = np.arange(len(x1))
y_pos=[x for x in y_pos]
plt.barh(y_pos,x1,color='g',alpha=0.5)
plt.barh(y_pos,-x2,color='g',alpha=0.5)
plt.show()
再执行一下,这样就画出一个背靠背的形式
这是顶格了,设置不顶格,需要做一个限制, plt 点 x limit,限制它的取值范围,限制负的 max,左边就是负的 x2,减1留出一个单元格,右边是 max x1,再加个一,留出来一个位置,这样就行了
x1= np.array([1,2,3])
x2 = np.array([2,2,3])
bar_labels=['batl',’bar2",'bar3']
fig = plt.figure(figsize=(8,6))
y_pos = np.arange(len(x1))
y_pos=[x for x in y_pos]
plt.barh(y_pos,x1,color='g',alpha=0.5)
plt.barh(y_pos,-x2,color='g',alpha=0.5)
plt.xlim(-max(x2)-1,max(x1)+1)
plt.show()
执行这个图就好看一些
别让它顶格,这个 y 轴也是一样别顶格了,再把 y 轴设置一下,plt 点 y limit,最小的从负一开始,最大的 len 值加一
x1= np.array([1,2,3])
x2 = np.array([2,2,3])
bar_labels=['batl',’bar2",'bar3']
fig = plt.figure(figsize=(8,6))
y_pos = np.arange(len(x1))
y_pos=[x for x in y_pos]
plt.barh(y_pos,x1,color='g',alpha=0.5)
plt.barh(y_pos,-x2,color='g',alpha=0.5)
plt.xlim(-max(x2)-1,max(x1)+1)
plt.ylim(-1,len(x1)+1)
plt.show()
看一下,这样就是画了一个还算标准的图
就是说画一个也可以,画两个也可以,让它组成这种背靠背的形式也行,有时候真的会遇到这种背靠背形式,看起来可能会直观一些。
3、下面要把好几种方式都画在一起,这个时候还是直接把数据拿过来,这就是当前的数据,数据当中,写了一个绿色的、蓝色的、红色的,所以说现在有三组数据,两组数据可以按照背靠背的形式,就是一正一负去分析,但三组数据它又不是一个正负的,还想按照 group1里分辨一下132的情况,group2 里分辨一下223的情况,前面的操作都是一样的,可以直接把前面操作拿过来,然后再指定一个 figsize 就完成了。然后接下来就是去画这个图,在画这个图的时候要画三种不同颜色, plt 点 bar一下,bar 里传进来的位置不是一样的,先画绿色的,画完了之后,再看线条的宽度,可以给它指定成固定的0.2,alpha 值是0.5,然后指定 color 等于g,label 指定它当前是属于哪个东西的, labels 里标注了一下它是 group1的,所以说得告诉它等于 group 几,这是画了第一个,之后画第二个第三个,第二个就是在第一个基础之上,第一个柱的宽度0.2,第二个柱再加上一个0.2,这就可以了,下面这个就是变成两个间隔乘一个二,有3个柱每个柱都要考虑到,要写成 list 结构,然后再指定一个颜色,第二个是蓝色的,第三个是红色的,再标一个 label1和 label2
green_data =[1, 2, 3]
blue_data =[3, 2, 1]
red_data = [2, 3, 3]
labels=['group1','group2', 'group 3']
pos= list(range(len(green_data)))
width = 0.2
fig, ax = plt.subplots(figsize=(8.6))
plt.bar(pos,green_data,width,alpha=0.5,color='g',label=label[0])
plt.bar([p+width for p in pos],green_data,width,alpha=0.5,color='b',label=labels[1])
plt.bar(p+width2forpinpos],green_data,widthalpha=0.5,color='r',label=labels[2])
这样就画完了,执行一下
group1 里有三个柱,group1 里也有三个柱,group3 里也是有三个柱,这三个指标分别用不同的颜色来表示,就是说画这样一个图,当中有三个 group,每个 group 都有不同的指标值,把这个指标值再放出来,这就是当前完成的一个结果。