Python matplotlib繪制散點圖配置(萬能模板案例)
散點圖
散點圖是指在 回歸分析中,數據點在直角坐標系平面上的 分佈圖,散點圖表示因變量隨 自變量而 變化的大致趨勢,據此可以選擇合適的函數 對數據點進行 擬合。
用兩組數據構成多個坐標點,考察坐標點的分佈,判斷兩變量之間是否存在某種關聯或總結坐標點的分佈模式。散點圖將序列顯示為一組點。值由點在 圖表中的位置表示。類別由圖表中的不同標記表示。散點圖通常用於比較跨類別的聚合數據。
下面給出一個散點圖的具體代碼案例
import matplotlib.pyplot as plt import pandas as pd import numpy as np plt.figure(figsize=(9,5), # (寬度 , 高度) 單位inch dpi=120, # 清晰度 dot-per-inch # facecolor='#CCCCCC', # 畫佈底色 # edgecolor='black',linewidth=0.2,frameon=True, # 畫佈邊框 #frameon=False # 不要畫佈邊框 ) # 設置全局中文字體 plt.rcParams['font.sans-serif'] = 'KaiTi' # 設置全局字體為中文 楷體 plt.rcParams['axes.unicode_minus'] = False # 不使用中文減號 #讀取數據 crime=pd.read_csv("crimeRatesByState2005.csv") print (list(crime.murder))#轉化成列表 #刪除state為United States的數據 crime2 = crime[crime.state != "United States"] #刪除state為District of Columbia的數據 crime2 = crime2[crime2.state != "District of Columbia" ] z = list(crime2.population/10000)#取人口數據 #colors = np.random.rand(len(list(crime2.murder)))#根據謀殺率隨機去顏色 cm = plt.cm.get_cmap('RdYlBu')#使用色譜RdYlBu plt.scatter(list(crime2.murder), list(crime2.burglary), s=z,c=z,cmap = cm, linewidth = 0.5, alpha = 0.5)#繪制散點圖 plt.xlabel("murder") plt.ylabel("burglary") plt.show()
散點圖一行代碼顯示
# 讀取數據 df = pd.read_csv('iris.csv') # 平面坐標系的位置隻能表示2維數據 x = df['sepal_length'] y = df['sepal_width'] # 根據X,Y值畫散點圖 plt.scatter(x,y)
加顏色的散點圖
# 讀取數據 df = pd.read_csv('iris.csv') # 平面坐標系的位置隻能表示2維數據 x = df['sepal_length'] y = df['sepal_width'] c = df['species'].map({'setosa':'r','versicolor':'g','virginica':'b'}) # 根據X,Y值畫散點圖, 用不同的顏色標識不同的分類 plt.scatter(x,y, c=c)
顏色深淺表示數值大小
# 讀取數據 df = pd.read_csv('iris.csv') # 平面坐標系的位置隻能表示2維數據 x = df['sepal_length'] y = df['sepal_width'] c = df['petal_length'] # 根據X,Y值畫散點圖, 用顏色的深淺表示花萼的長度 plt.scatter(x,y, c=c, cmap=plt.cm.RdYlBu)
散點圖顯示顏色和大小
# 讀取數據 df = pd.read_csv('iris.csv') # 平面坐標系的位置隻能表示2維數據 x = df['sepal_length'] # x 軸坐標 y = df['sepal_width'] # y 軸坐標 c = df['petal_length'] # 顏色color s = df['petal_width'] # 大小size # 根據X,Y值畫散點圖, 用顏色的深淺表示花萼的長度,用大小表示花萼的寬度 plt.figure(figsize=(5,5),dpi=100) #plt.scatter(x,y, c=c, s=50) # 可以是標量,那麼所有的點都一樣 plt.scatter(x,y, c=c, s=s*30)
自定義圖表散點圖
# 讀取數據 df = pd.read_csv('iris.csv') def get_xycs(df): # 平面坐標系的位置隻能表示2維數據 x = df['sepal_length'] # x 軸坐標 y = df['sepal_width'] # y 軸坐標 c = df['petal_length'] # 顏色color s = df['petal_width'] # 大小size return x,y,c,s markers = {'setosa':'o', 'versicolor':'D', 'virginica':'*'} # 根據X,Y值畫散點圖, 用顏色的深淺表示花萼的長度,用大小表示花萼的寬度, 每組數據隻能是一種點樣式 plt.figure(figsize=(5,5),dpi=100) #plt.scatter(x,y, c=c, s=50) # 可以是標量,那麼所有的點都一樣 for sp in df['species'].unique(): x,y,c,s = get_xycs(df[df['species']==sp]) plt.scatter(x,y, c=c, s=s*30, cmap=plt.cm.seismic, marker=markers[sp],label=sp) plt.legend()
散點圖萬能模板
# 讀取數據 df = pd.read_csv('iris.csv') def get_xycs(df): # 平面坐標系的位置隻能表示2維數據 x = df['sepal_length'] # x 軸坐標 y = df['sepal_width'] # y 軸坐標 c = df['petal_length'] # 顏色color s = df['petal_width'] # 大小size return x,y,c,s markers = {'setosa':'o', 'versicolor':'D', 'virginica':'*'} # 根據X,Y值畫散點圖, 用顏色的深淺表示花萼的長度,用大小表示花萼的寬度, 每組數據隻能是一種點樣式 plt.figure(figsize=(5,5),dpi=100) #plt.scatter(x,y, c=c, s=50) # 可以是標量,那麼所有的點都一樣 for sp in df['species'].unique(): x,y,c,s = get_xycs(df[df['species']==sp]) plt.scatter(x,y, s=s*30, cmap=plt.cm.seismic, marker=markers[sp],label=sp) plt.legend()
其他模板
### 在二維坐標系上,位置表示(x,y)二維數據 x = df.sepal_length # x 表示花瓣長 y = df.sepal_width # y 表示花瓣寬 s = (df.petal_length * df.petal_width)*np.pi # s(size) 表示花萼面積 c = (df.petal_length * df.petal_width)*np.pi plt.scatter(x,y,s=s*5, c=c,cmap=plt.cm.RdYlBu_r) plt.xlabel('sepal_length') plt.ylabel('sepal_width')
# 在二維坐標系上,位置表示(x,y)二維數據 x = df.sepal_length # x 表示花瓣長 y = df.sepal_width # y 表示花瓣寬 s = (df.petal_length * df.petal_width)*np.pi # s(size) 表示花萼面積 #print(df.species) #colormap = {"setosa":"#FF0000", "versicolor":"green", "virginica":"b"} # 定義一個字典將species字符串映射到顏色字符串上 colormap = {"setosa":1, "versicolor":5, "virginica":6} # 定義一個字典將species字符串映射到顏色字符串上 c = df.species.map(colormap) #print(c) plt.scatter(x,y,s=s*5, c=c,cmap=plt.cm.coolwarm, alpha=0.7, edgecolors='face') plt.xlabel('sepal_length') plt.ylabel('sepal_width')
plt.scatter(df['burglary'], df['larceny_theft'], s=df['population']*2e-5, c=df['motor_vehicle_theft'], cmap=plt.cm.coolwarm, edgecolors='b', alpha=0.75) for idx,statename in df['state'].items(): plt.text(x=df['burglary'][idx],y=df['larceny_theft'][idx]-df['population'][idx]*2e-5*0.5,s=statename,fontsize=6,ha='center',va='top')
df.plot.scatter(x='burglary',y='larceny_theft',c='motor_vehicle_theft',cmap=plt.cm.coolwarm,s=df['population']*2e-5) for i in df.index: if i in top5_motor_theft_index: # 偷車賊最多的5個州 plt.text(df.loc[i,'burglary']+10, df.loc[i,'larceny_theft']-10, df.loc[i,'state'], color='red') # 一個文本框
到此這篇關於Python matplotlib繪制散點圖配置(萬能模板案例)的文章就介紹到這瞭,更多相關python matplotlib繪制散點圖 內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python可視化學習之seaborn繪制線型回歸曲線
- python散點圖的繪制
- 前端AI機器學習在瀏覽器中訓練模型
- R語言 實現data.frame 分組計數、求和等
- Python數據可視化探索實例分享