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,實現上下疊加式。

按照以上思路就能繪製出三個條形圖上下疊加,或者左右疊加式的了。當然也能畫出水平方向堆疊式的條形圖了。

小白一個,如有不對請指出。感謝觀看,喜歡就點個贊吧。
明天更新直方圖和餅圖。

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