Python視覺化-氣泡圖

kewlgrl發表於2018-04-24

氣泡圖類似散點圖,也是表示XY軸座標之間的變化關係,也可以像彩色散點圖給點上色。

區別在於可以通過圖中散點的大小來直觀感受其所表示的數值大小。

一、資料檔案準備

1、PeopleNumber.csv

city,people,price
NJ ,823,3.19
XZ ,866,2.7
HA,487,2.51
YC,723,2.78
SQ,485,2.61
TZ,464,3.13
YZ,448,3.14
NT,730,2.69
LYG ,447,2.51
ZJ,318,3.15
WX,651,3.15
SZ,1061,3.15
CZ,470,3.15

氣泡圖X軸和Y軸分別描繪人口與價格的關係,用不同顏色標識不同城市。

第一列是城市(縮寫)索引,第二列是人口數值,第三列是價格數值。

csv檔案本質上就是以逗號(,)分隔開的txt檔案,所以用excel開啟形式為:

二、匯入模組包

可參考Windows下安裝Python、matplotlib包 及相關
https://blog.csdn.net/mikasa3/article/details/78942650 

1、numpy

2、pandas

3、seaborn

4、matplotlib

三、完整程式碼

如下:

import numpy as np  
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
def DrawBubble(read_name):#氣泡圖
    sns.set(style = "whitegrid")#設定樣式
    fp = pd.read_csv(read_name)#資料來源
    x = fp.people#X軸資料
    y = fp.price#Y軸資料
    z = fp.price#用來調整各個點的大小s
    cm = plt.cm.get_cmap('RdYlBu')
    fig,ax = plt.subplots(figsize = (12,10))
    #注意s離散化的方法,因為需要通過點的大小來直觀感受其所表示的數值大小
    #我所使用的是當前點的數值減去集合中的最小值後+0.1再*1000
    #引數是X軸資料、Y軸資料、各個點的大小、各個點的顏色
    bubble = ax.scatter(x, y , s = (z - np.min(z) + 0.1) * 1000, c = z, cmap = cm, linewidth = 0.5, alpha = 0.5)
    ax.grid()
    fig.colorbar(bubble)
    ax.set_xlabel('people of cities', fontsize = 15)#X軸標籤
    ax.set_ylabel('price of something', fontsize = 15)#Y軸標籤
    plt.show()
if __name__=='__main__':
    DrawBubble("PeopleNumber.csv")#氣泡圖

四、執行結果

1、氣泡圖


相關文章