首頁 > 軟體

Python matplotlib繪製散點圖設定(萬能模板案例)

2022-07-11 22:03:58

散點圖

散點圖是指在 迴歸分析中,資料點在直角座標系平面上的 分佈圖,散點圖表示因變數隨 自變數而 變化的大致趨勢,據此可以選擇合適的函數 對資料點進行 擬合。

用兩組資料構成多個座標點,考察座標點的分佈,判斷兩變數之間是否存在某種關聯或總結座標點的分佈模式。散點圖將序列顯示為一組點。值由點在 圖表中的位置表示。類別由圖表中的不同標記表示。散點圖通常用於比較跨類別的聚合資料。

下面給出一個散點圖的具體程式碼案例

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繪製散點圖 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com