matplotlib绘制柱状图(基础操作)

  • Post author:
  • Post category:其他


@

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()

在这里插入图片描述



二、设置坐标的刻度(ticks),轴的标签和标题

在数据分析的很多时候,我们各个柱下面通常不是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()



在这里插入图片描述



总结

以上操作,基本可以画出来一个像样的图了,更加具体的,可以更加深入的了解其中的各个参数,对细节进行更多的打磨,谢谢。



版权声明:本文为wish_you_luck原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。