條形圖、直方圖、餅圖
數據可視化(一)中有介紹散點圖和折線圖。
- 條形圖
條形圖分好多種,有豎直的,有水平的,有左右疊加式的,有上下疊加式的- 豎直條形圖
先來看豎直條形圖的簡單代碼,用到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,實現上下疊加式。
按照以上思路就能繪製出三個條形圖上下疊加,或者左右疊加式的了。當然也能畫出水平方向堆疊式的條形圖了。
小白一個,如有不對請指出。感謝觀看,喜歡就點個贊吧。
明天更新直方圖和餅圖。