數據可視化實例(六): 帶線性回歸最佳擬合線的散點圖(matplotlib,pandas)


https://datawhalechina.github.io/pms50/#/chapter3/chapter3

如果你想了解兩個變量如何相互改變,那么最佳擬合線就是常用的方法。 下圖顯示了數據中各組之間最佳擬合線的差異。 要禁用分組並僅為整個數據集繪制一條最佳擬合線,請從下面的 sns.lmplot()調用中刪除 hue ='cyl'參數。

導入所需要的庫

# 導入numpy庫
import numpy as np
# 導入pandas庫
import pandas as pd
# 導入matplotlib庫
import matplotlib as mpl
import matplotlib.pyplot as plt
# 導入seaborn庫
import seaborn as sns
# 在jupyter notebook顯示圖像
%matplotlib inline

設定圖像各種屬性

large = 22; med = 16; small = 12
            # 設置子圖上的標題字體
params = {'axes.titlesize': large,  
            # 設置圖例的字體
          'legend.fontsize': med,
            # 設置圖像的畫布
          'figure.figsize': (16, 10),  
            # 設置標簽的字體
          'axes.labelsize': med, 
            # 設置x軸上的標尺的字體
          'xtick.labelsize': med,  
            # 設置整個畫布的標題字體
          'ytick.labelsize': med,  
          'figure.titlesize': large}  
# 更新默認屬性
plt.rcParams.update(params)  
 # 設定整體風格
plt.style.use('seaborn-whitegrid')
# 設定整體背景風格
sns.set_style("white")

程序代碼

# step1:導入數據

df = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/mpg_ggplot2.csv")

    # 選擇cyl為4,8的數據集
df_select = df.loc[df.cyl.isin([4, 8]), :]

# step2:繪圖

    # 設立風格
sns.set_style('white')

gridobj = sns.lmplot(x = 'displ',       # 橫坐標
                   y = 'hwy',           # 縱坐標 
                    hue = 'cyl',        # 定義被繪制數據的子集
                    data = df_select,   # 繪圖所需要的數據集
                    height = 7,         # 每個子圖的高度
                    aspect = 1.6,       # 每個子圖的寬高比
                    robust = True,      # 抗噪聲魯棒性 
                    palette = 'tab10',  # 調色板(不同層次的“色調”變量)
                    # 設置其它參數
                    scatter_kws = dict(s = 60, linewidths = .7, edgecolors = 'black'))

# step3:裝飾 

    # 橫縱坐標范圍
gridobj.set(xlim = (0.5, 7.5), ylim = (0, 50))
    # 設置標題
plt.title("Scatterplot with line of best fit grouped by number of cylinders", fontsize=20)
    # 顯示圖像
plt.show()

# step1:導入數據

df = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/mpg_ggplot2.csv")

    # 選擇cyl為4,8的數據集
df_select = df.loc[df.cyl.isin([4, 8]), :]

# step2:繪圖

    # 設立風格
sns.set_style('white')

gridobj = sns.lmplot(x = 'displ',       # 橫坐標
                   y = 'hwy',           # 縱坐標 
                    hue = 'cyl',        # 定義繪制數據的子集
                    data = df_select,   # 繪圖所需要的數據集
                    height = 7,         # 每個子圖的高度
                    robust = True,      # 抗噪聲魯棒性
                    palette = 'Set1',  # 調色板(不同層次的“色調”變量)
                    col = 'cyl',        # 按照類別繪制圖像,一個類別一張圖像      
                    # 設置其它參數
                    scatter_kws = dict(s = 60, linewidths = .7, edgecolors = 'black'))

# step3:裝飾

    # 橫縱坐標范圍
gridobj.set(xlim = (0.5, 7.5), ylim = (0, 50))
    # 設置標題
plt.title("Scatterplot with line of best fit grouped by number of cylinders", fontsize=20)
    # 顯示圖像
plt.show()

 

博文總結

索引

  • .loc[ ]__標簽索引
  • .iloc[ ]__位置索引

sns.lmplot

  • 回歸模型繪制
  • 參數
    • x__橫坐標標稱
    • y__縱坐標標稱
    • hue__定義被繪制數據的子集
    • data__繪圖所需要的數據集
    • height__每個子圖的高度
    • aspect__每個子圖的寬高比
    • palette__調色板


免責聲明!

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



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