關聯 (Correlation)
關聯圖表用於可視化2個或更多變量之間的關系。 也就是說,一個變量如何相對於另一個變化。
散點圖(Scatter plot)
散點圖是用於研究兩個變量之間關系的經典的和基本的圖表。 如果數據中有多個組,則可能需要以不同顏色可視化每個組。 在 matplotlib 中,您可以使用 plt.scatterplot() 方便地執行此操作。
導入需要的模塊庫
import numpy as np # 導入numpy庫 import pandas as pd # 導入pandas庫 import matplotlib as mpl # 導入matplotlib庫 import matplotlib.pyplot as plt import seaborn as sns # 導入seaborn庫
設定圖像各種屬性
large = 22; med = 16; small = 12 params = {'axes.titlesize': large, #子圖上的標題字體大小 'legend.fontsize': med, #圖例的字體大小 'figure.figsize': (16, 10), #圖像的畫布大小 'axes.labelsize': med, #標簽的字體大小 'xtick.labelsize': med, #x軸上的標尺的字體大小 'ytick.labelsize': med, #y軸上的標尺的字體大小 'figure.titlesize': large} #整個畫布的標題字體大小 plt.rcParams.update(params) #更新默認屬性 plt.style.use('seaborn-whitegrid') #設定整體風格 sns.set_style("white") #設定整體背景風格
程序代碼
# step1:導入數據
midwest = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/midwest_filter.csv")
# step2:准備數據和顏色
# step2:准備數據和顏色 categories = np.unique(midwest['category']) # 使用np.unique對“midwest['category']” 去重 colors = [plt.cm.tab10(i/float(len(categories) - 1)) for i in range(len(categories))] # 使用列表推導式,建立colors列表。
# step3:建立畫布
# step3:建立畫布 plt.figure(figsize = (16, 10), # 繪圖尺寸,默認為(6.4,4.8) dpi = 80, # 圖像的分辨率,默認dpi為100 facecolor = 'w', # 背景顏色,默認為白色 edgecolor = 'k' )
# step4:繪圖
# step4:繪圖 # 使用函數enumerate:將可遍歷的數據對象組合為一個索引序列,同時列出數據和數據索引 for i, category in enumerate(categories): plt.scatter("area", "poptotal", # 橫坐標名稱,縱坐標名稱 data = midwest.loc[midwest.category == category,:], # 程序會自動的從data提取data中"area"和"poptotal"數據 s = 20, # 數據點尺寸 c = np.array(colors[i]).reshape(1, -1), # 設定顏色,若不轉換為二維,會出現報錯 label = str(category)) # 設定標簽名稱
# step5:裝飾
# step5:裝飾 plt.gca().set(xlim = (0, 0.12), ylim=(0, 80000)) # 設定橫軸坐標的范圍(元組) plt.xticks(fontsize = 12) # 設定x坐標軸上字體的大小 plt.yticks(fontsize = 12) # 設定y坐標軸上字體的大小 plt.ylabel('Population', fontsize = 22) # 設定y坐標軸上的標題和字體大小 plt.xlabel("Area", fontsize = 22) # 設定x坐標軸上的標題和字體大小 plt.title("Scatterplot of Midwest Area vs Population", fontsize = 22) # 設定整個圖像的標題和字體大小 plt.legend(fontsize = 12) # 設定圖例的字體大小 plt.show()
散點圖
總結
創建畫布
- plt.figure()
參數說明
- figsize__畫布尺寸
- dpi__分辨率
- facecolor__背景顏色,默認為白色
- edgecolor__邊框顏色,默認為白色
繪制散點圖函數
- plt.scatter()
參數說明
- x__指定x軸數據(或者輸入x軸數據名稱)
- y__指定y軸數據(或者輸入y軸數據名稱)
- s__點的尺寸
- alpha__點的透明度
- linewidths__散點邊框點的寬度
- edgecolors__散點邊框的顏色
- cmap__指定散點的顏色映射,會使用不同顏色來區分散點的值
光譜
- plt.cm.tab10()
plt.cm.tab10()
- 光譜網站:https://matplotlib.org/tutorials/colors/colormaps.html
- 可在plt.cm.tab10()中輸入任意浮點數,進行返回顏色
enumerate
- enumerate() 函數用於將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列,同時列出數據和數據下標,一般用在 for 循環當中。enumerate() 函數用於將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列,同時列出數據和數據下標,一般用在 for 循環當中。
- 可用[*]打開惰性數據
列表推導式
- 列表推導式(又稱列表解析式)提供了一種簡明扼要的方法來創建列表。
- 它的結構是在一個中括號里包含一個表達式,然后是一個for語句,然后是 0 個或多個 for 或者 if 語句。那個表達式可以是任意的,意思是你可以在列表中放入任意類型的對象。返回結果將是一個新的列表,在這個以 if 和 for 語句為上下文的表達式運行完成之后產生。
- 列表推導式的執行順序:各語句之間是嵌套關系,左邊第二個語句是最外層,依次往右進一層,左邊第一條語句是最后一層。
- colors = [plt.cm.tab10(i/float(len(categories) - 1)) for i in range(len(categories))]