數據可視化實例(三): 散點圖(pandas,matplotlib,numpy)


關聯 (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()

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))]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM