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__調色板