开发者学堂课程【Python 常用数据科学库:条形图外观】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/546/detail/7501
条形图外观
想要在数据当中中将问题阐述得更清楚,就需要增加一些指标。 一共有 ABCDE,5条数据,先指定一个大小 Figure,之后编译 Y 轴的刻度。 在指定一个 bars,bars=plt.barh (y_pos,data),传递完 data 以后再传输一些小数据: bars=plt.barh (y_pos,data,alpha=0.5),最后传输颜色: bars=plt.barh (y_pos,data,alpha=0.5,color=’g’)。先通过 plt.show() 展示一下。但此时图形不美观,需要将其进行美化。 可以观察一下还需要加入哪一些指标。 注意观察每一个指标后都有唯一的值,可以把纸写在后面,这样看起来更加直接。在进行添加标注的动作:在每个 bars 中写出每个数据:for b,d in zip(bars,data),还需要写东西:先指定宽度:plt.testg (b.get_width()),再往后加入一点宽度 :plt.testg (b.get_width()+b.get_width()),最后乘上0.05:plt.testg (b.get_width()+b.get_width()*0.05),再到结尾:plt.testg (b.get_width()+b.get_width()*0.05,b.get_y),加上 height: plt.testg (b.get_width()+b.get_width()*0.05,b.get_y+b.get_height()),相当于大致去找这个位置。在这个位置上,需要写入一些东西,也就是当前的指标:plt.testg (b.get_width()+b.get_width()*0.05,b.get_y+b.get_height()/2,’{0:.2%}’.format(d/min{data})),此时将数据传输进去了。先运行查看是否正确,发现错误进行更改之后: plt.test (b.get_width()+b.get_width()*0.05,b.get_y+b.get_height()/2,’{0:.2%}’.format(d/min{data})),继续运行,系统提示:不支持的这种格式,回头查看代码,发现y加上指标没有加上括号,更改为:plt.testg(b.get_width()+b.get_width()*0.05,b.get_y()+b.get_height()/2,’{0:.2%}’.format(d/min{data}))
继续运行发现在条形图后面加上了指标。该指标表示当前数值是最小值的百分之多少,最小值也就是最后一个。能够在条形图中画一条线,以便可以查看在每个指标时最小值是多少。方法如下:
先画一条竖线:plt.vlines(min(data)),指定当前指标:plt.vlines(min(data,-)),len(data)+0.5)。加上该代码之后已经画出了一条竖,就是按照最小值的位置去画了一条竖线。由于竖线不够美观,也可以通过修改代码来调整其外观:plt.vlines(min(data,-)),len(data)+0.5,linestyle=’dashed’),也就是把该竖线更改为虚线格式。最后也可以加上一些 Y轴 X 轴的限制。以上就是对于条形图来说最基本的操作。条形图如下:
在条形图当中也可以把 Color map 调出来,然后在条形图当中运用:
首先设置数据:
mean_values=range(10,18)
X_pos=range(len(mean_values))
调用 Color map 时需要先传与颜色有关的东西:
Import matplotlib.colors as col
Import matplotlib.cm as cm
cm 就是 Color map 的意思。构造 Color map 1和 Color map 2,有许多种格式先使用其中的一种,会根据数据自动的去做数据的颜色。先最小值传进来,再把最大值传进来,就会自动地根据最小值和最大值之间有多少个间隙,就指定多少种颜色:cmap1=cm.ScalarMappable(col.Normalize(min(mean_values),max(mean_values),cm.hot))
对于 Cmap2,可以进行一些更改,不用最小值和最大值,可以自己指定一个区间:
cmap1=cm.ScalarMappable(col.Normalize(0,20,cm.hot))
然后编译一个子图:
Plt.subplot(121)
传入2个数据之后,指定颜色为 Cmap1,直接转化为二进制格式,只需要将其当成一个模板即可。
Plt.bar(x-pos,mean_values,color=cmap1,to_rgba(mean_values))
接下来是第2个图:
Plt.subplot(122)
Plt.bar(x-pos,mean_values,color=cmap2,to_rgba(mean_values))
代码如下:
mean_values=range(10,18)
X_pos=range(len(mean_values))
Import matplotlib.colors as col
Import matplotlib.cm as cmcmap1=cm.ScalarMappable(col.Normalize(min(mean_values),max(mean_values),cm.hot))
cmap1=cm.ScalarMappable(col.Normalize(0,20,cm.hot))
Plt.subplot(121)
Plt.bar(x-pos,mean_values,color=cmap1,to_rgba(mean_values))
Plt.subplot(122)
Plt.bar(x-pos,mean_values,color=cmap2,to_rgba(mean_values))
Plt.show
点击运行之后无法正常运行,发现最后没有写括号。加上括号,运行成功。条形图如下:
在条形图当中可以自己指定。每一个都可以让他按照一种变化的方式变化,自己制定颜色也行,按照这个办法去自动的生成颜色就是一种彩虹色,颜色都各不相同,由浅到深,由深到浅,可以自动生成一个 colormap,需要先导入 Color map,它会自动的生成颜色,就会产生一个新的结果。
先把图调进来:
pattern=(‘-‘,’+’,’x’,’\\’,’*’,’o’,’0’,’,’)
fig=plt.gca()
再继续指定一个值:
Mean_values=range(1,len(patterns)+1)
X_pos= list(range(1,len(Mean_values)))
传入当前的值到bars里面:
Bars=plt.bar(X_pos, Mean_values)
因为指定了 bars,说明图形中画了 N 多个柱,所以需要填充:
For bar,petterns in zip (bars,patterns):
Bar,set_htach(patterns)
Plt.show
总代码如下:
pattern=(‘-‘,’+’,’x’,’\\’,’*’,’o’,’0’,’,’)
fig=plt.gca()
Mean_values=range(1,len(patterns)+1)
X_pos= list(range(1,len(Mean_values)))
Bars=plt.bar(X_pos, Mean_values)
For bar,petterns in zip (bars,patterns):
Bar,set_htach(patterns)
Plt.show
运行之后,背景颜色是深色,也可以将背景颜色进行更改:
pattern=(‘-‘,’+’,’x’,’\\’,’*’,’o’,’0’,’,’)
fig=plt.gca()
Mean_values=range(1,len(patterns)+1)
X_pos= list(range(1,len(Mean_values)))
Bars=plt.bar(X_pos, Mean_values,color=‘white’)
For bar,petterns in zip (bars,patterns):
Bar,set_htach(patterns)
Plt.show
运行之后,每个条形图中都有不同风格的图案。条形图如下:
以上就是条形图中最基本的操作。


