条形图、直方图、饼图
数据可视化(一)中有介绍散点图和折线图。
- 条形图
条形图分好多种,有竖直的,有水平的,有左右叠加式的,有上下叠加式的- 竖直条形图
先来看竖直条形图的简单代码,用到bar函数。注意和散点图scatter函数,折线图plot函数做下对比。
- 竖直条形图
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [10,20,30,20,10]
plt.bar(x,y,width=0.5)
plt.show()
结果:
- 水平条形图
当然还有水平的条形图。最简单的方法就是用到barh函数,还是简单的代码:
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [10,20,30,20,10]
plt.barh(x,y,height=0.5)
plt.show()
结果如下:
用pycharm可以看到参数,第一个是y轴,第二个是width宽度,第三个是高度。和我们理解的不太一样,其实可以把每一个数据条形图看成一个小矩形,矩形有宽和高,对应的就是barh的参数。如不懂,看下面第二个图的图示就可以了。
所以在水平条形图中的宽width相当于竖直条形图的高height。这样就好理解点。
- 左右叠加式的条形图
类似于这种:
来看代码的实现:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(5)
y1 = [10,20,30,20,10]
y2 = [5,10,20,40,5]
plt.bar(x,y1,width=0.2)
plt.bar(x+0.2,y2,width=0.2)
plt.show()
np.arange(x1,x2,x3)表示生成起点x1,终点x2,步长为x3的数组。所以上面代码生成了x = [0 1 2 3 4]这样一个数组。
这里下面的 x+0.2是什么意思呢?
其实就是生成了一个心的数组(列表),新列表的元素是x数组的每个元素加0.2,即每个条形图的宽度。所以就能实现左右条形图重叠的形式了。
再来简单介绍一下numpy库:这里导入了numpy库,并把其命名为np。np库可以将一个数组或者列表的元素看成一个数据。还是看一段代码:
import numpy as np
#import matplotlib.pyplot as plt
a = np.array([1,2,3,4,5])
b = np.array([2,3,4,5,6])
n = np.arange(2,10,2)
c1 = []
c2 = []
for i in range(0,5):
c1.append( a[i] + b[i] )
c2 = a + b
print(c1)
print(c2)
print(n)
其运行结果:
[3, 5, 7, 9, 11]
[ 3 5 7 9 11]
[2 4 6 8]
可以看出c1 和 c2的结果是一样的,只不过c2是数组。
运用np库可以让数组列表之间的运算不再关注于每一个元素。np.arange(x1,x2,x3)表示生成起点x1,终点x2,步长为x3的数组。
- 上下叠加式
即这种
可以看出上下叠加式的,就是蓝色,黄色条形图横座标不变,黄色部分的底部从蓝色的顶部开始。其实就是和左右叠加的类似了。
还是简单代码:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(5)
y1 = [10,20,30,20,10]
y2 = [5,10,20,40,5]
plt.bar(x,y1,width=0.2)
plt.bar(x,y2,width=0.2,bottom=y1)
plt.show()
绘制y2的时候令bottom=y1,实现上下叠加式。
按照以上思路就能绘制出三个条形图上下叠加,或者左右叠加式的了。当然也能画出水平方向堆叠式的条形图了。
小白一个,如有不对请指出。感谢观看,喜欢就点个赞吧。
明天更新直方图和饼图。