matplotlib绘制柱状图(基础操作) | 您所在的位置:网站首页 › matplotlib论文柱状图 › matplotlib绘制柱状图(基础操作) |
@TOC 前言Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。本文由浅入深,教你画柱状图 柱状图的部分源码 bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)这里是bar中部分源码(主要是参数部分),下面的内容将由浅入深逐渐演示各个参数的作用,以达到理解的作用,且能画出漂亮的柱状图。 一、画一个简单的柱状图 bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)首先,我们只需要指定两个参数,就可以画一个简单的柱状图 一个是x,一个是height. x 的作用是设置柱所在的位置(也就是在x坐标上面的什么位置) height的作用是设置柱状图的高度 x与geight的数据存储在list当中,在实际写入时,并不需要去指定,python会自动识别出来(可以去debug 一下进入plt.bar([xxxx],[xxxx])这个语句,就会发现bar会做特别多的事) import matplotlib.pyplot as plt plt.bar([0,1,2,3],[5,6,7,8]) plt.show()在数据分析的很多时候,我们各个柱下面通常不是x刻度值,而是有实际意义的字符串,那么这个时候就需要我们进行一个设置,比如说 1.plt.xticks(各个柱所在的x坐标的位置,想换成的标签) 一般传入将数据存在列表中再传入参数 设置r轴也同样的道理 2.设置x与y轴的标签就比较简单了 plt.xlabel("") plt.ylabel("") 3.设置标题 plt.title(“i am title”) import matplotlib.pyplot as plt import matplotlib data = [5, 6, 7, 8] labels = ["a", "b", "c", "d"] plt.bar(range(len(data)), data) plt.xticks(range(len(data)),labels) plt.xlabel("i am x") plt.ylabel("i am y") plt.title("i am title") plt.show()这里我只说非常简单的设置颜色的方法,因为如果详细的说如何设置关于颜色的东西,需要另外写一篇博文来详细说明,这一篇是不够的,但我会放一个链接,里面会有非常详细关于颜色的设置. 颜色的设置在bar中,我们只需要写color = [xxxxx]就可以设置如果需要设置的量比较大,还可以这样设置 import matplotlib.colors as mcolors colors = list(mcolors.TABLEAU_COLORS.keys()) import matplotlib.pyplot as plt import matplotlib data = [5, 6, 7, 8] labels = ["a", "b", "c", "d"] colors = ["red","yellow",'blue','black'] plt.bar(range(len(data)), data,color="colors") plt.xticks(range(len(data)),labels) plt.xlabel("i am x") plt.ylabel("i am y") plt.title("i am title") plt.show()更多设置颜色的方法,请看下面的几篇博文: 一文搞懂matplotlib中的颜色设置 Python Matplotlib绘制渐变色柱状图(bar)并加边框和配置渐变颜色条(colorbar) 四、设置柱的透明度这个也比较容易,在bar中写入alpha=x就就可以了,x在0-1之间,这里不作过多展示 五、设置柱的宽度(width)width宽度是在bar中的参数 设置也很容易,我们只需要指定一个数值即可,即width = x width 的默认值是0.8,如果想让各个柱挨在一起,可以设置width = 1.0 width一般设置范围就在(0,1)之间。 width设置大于1.0 或者是负数也是可以的 ,可以自己尝试一下。 import matplotlib.pyplot as plt import matplotlib data = [5, 6, 7, 8] labels = ["a", "b", "c", "d"] colors = ["red","yellow",'blue','black'] plt.bar(range(len(data)), data,color=colors,width=0.5) plt.xticks(range(len(data)),labels) plt.xlabel("i am x") plt.ylabel("i am y") plt.show()这个是width = 0.5 这个是width = 1.0 这个是width = 5 上面我们画出了图,但是各个图的高度并不能非常清晰的看出来,于是我们可以在上面添加各个数的高度,那么就需要用到下面的函数 plt.text() plt.text(x=100, y=100, s=‘text’, rotation=90) x=:表示在画布上的x坐标 y=:表示在画布上的y坐标 s=:表示需要展示的文本 rotation=:表示文本的旋转角度 import matplotlib.pyplot as plt import matplotlib data = [5, 6, 7, 8] labels = ["a", "b", "c", "d"] colors = ["red","yellow",'blue','black'] plt.bar(range(len(data)), data,color=colors,width=0.5) plt.xticks(range(len(data)),labels) for i in range(len(data)): plt.text(x= i- 0.05 , y=data[i] + 0.2, s = '%d' % data[i]) plt.xlabel("i am x") plt.ylabel("i am y") plt.title("i am title") plt.show()以上操作,基本可以画出来一个像样的图了,更加具体的,可以更加深入的了解其中的各个参数,对细节进行更多的打磨,谢谢。 |
CopyRight 2018-2019 实验室设备网 版权所有 |