Python数据可视化(二)

条形图、直方图、饼图

数据可视化(一)中有介绍散点图和折线图。

  • 条形图
    条形图分好多种,有竖直的,有水平的,有左右叠加式的,有上下叠加式的
    • 竖直条形图
      先来看竖直条形图的简单代码,用到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,实现上下叠加式。

按照以上思路就能绘制出三个条形图上下叠加,或者左右叠加式的了。当然也能画出水平方向堆叠式的条形图了。

小白一个,如有不对请指出。感谢观看,喜欢就点个赞吧。
明天更新直方图和饼图。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章