Python視覺化圖系列(1)-----jupyter notebook
Python視覺化-----複雜的散點圖
前言
提示:00 安裝庫,配置環境
在Python中進行視覺化,我們需要的是這些庫:
matplotlib:python中自帶的,也是最常用的視覺化工具包,在Jupyter中甚至可以找到matplotlib的網站。
seaborn:python中視覺化的新起之秀,致力於統計資料視覺化。
brewer2mpl:brewer2mpl是一個專供python使用的,用於訪問colorbrewer2色譜的工具,colorbrewer2是一個專業顏色顧問公司。
matplotlib
通常來說,如果我們是使用anaconda安裝的python,那matplotlib是自帶的
如果你發現你的python環境中沒有matplotlib,那你可以使用以下命令先安裝pip,然後從pip中安裝matplotlib:
下面展示安裝程式碼
。
python -m pip install -U pip
python -m pip install -U matplotlib
你可以通過在Jupyter中執行 print(matplotlib.version) 來檢視你現有的matplotlib版本。
下面展示執行程式碼
。
import matplotlib as mlp
print(mlp.__version__)
seaborn是需要自己安裝的。如果不是anaconda自帶,建議使用pip安裝。
#%%cmd
#pip install seaborn
import seaborn as sns
print(sns.__version__)
seaborn要求必須0.9.0以上,否則程式碼會報錯,不足0.9.0的大家可以使用以下程式碼進行升級。
下面展示相關程式碼
。
#%%cmd
#pip install --upgrade seaborn
brewer2mpl
同樣也需要自己安裝,使用以下程式碼:
#%%cmd
#pip install brewer2mpl
不必過於在意版本,通常來說都是直接安裝成最新版。
提示:以下是本篇文章正文內容,下面案例可供參考
一、我們的目標是什麼?
我們的目標是:繪製出下圖,並且利用資料解讀圖內的資訊。
二、實現目標的知識準備
1.引入庫
程式碼如下(示例):
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
#如果你在使用Jupyter Notebook,你會需要這樣一句命令來讓你的影像顯示
2.匯入資料
程式碼如下(示例):
#匯入資料
midwest = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/midwest_filter.csv")
midwest.head()
該處使用的url網路請求的資料。
3.準備標籤的列表和顏色
程式碼如下(示例):
#(1)標籤
midwest['category']
#提取標籤中的類別
categories = np.unique(midwest['category']) #去掉所有重複的項
categories #這就是我們要使用的標籤的類別列表
顏色
接下來要創造和標籤的類別一樣多的顏色,如果只有三四個類別,或許我們還可以自己寫,然而面對十幾個,或者二十個分類,我們需要讓matplotlib來幫助我們自動生成顏色。
plt.cm.tab10()
用於建立顏色的十號光譜,在matplotlib中,有眾多光譜供我們選擇:https://matplotlib.org/tutorials/colors/colormaps.html
我們可以在plt.cm.tab10()中輸入任意浮點數,來提取出一種顏色。光譜tab10中總共只有十種顏色,如果輸入的浮點數比較接近,會返回類似的顏色。這種顏色會以元祖的形式返回,表示為四個浮點陣列成的RGBA色彩空間或者三個浮點陣列成的RGB色彩空間中的隨機色彩。
程式碼如下(示例):
#(2)顏色
color1 = plt.cm.tab10(5.2)
color1 #四個浮點陣列成的一個顏色
np.array(color1).reshape(1,-1) #reshape:增維,輸入(1,-1)是讓行上的維度為1,(-1,1)是讓列上的維度為1
x1 = np.random.randn(10)
x2 = x1 + x1**2 - 10
plt.scatter(x1,x2,s=50
,c=np.array(color1).reshape(1,-1))
plt.show()
三、畫目標圖片(複雜的散點圖)
至此已經闡述完怎樣找資料、標籤、顏色,現在開始畫圖。
程式碼如下(示例):
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
#如果你在使用Jupyter Notebook,你會需要這樣一句命令來讓你的影像顯示
midwest.head()
categories[13] #0~13,通過索引提取標籤類別
midwest.loc[midwest["category"] == categories[0],"poptotal"].head()
#為了標籤的名稱,我們本來就需要迴圈和標籤的類別數目一樣的次數
#所以需要迴圈的次數 = 需要生成的顏色的次數 = 需要生成的小數的個數
#只需要在迴圈中不斷生成顏色就好了
#所以我們可以利用迴圈中的i來生成14個不同的小數
plt.figure(figsize=(16,10)) #建立畫布
for i in range(len(categories)):
plt.scatter(midwest.loc[midwest["category"]==categories[i],"area"]
,midwest.loc[midwest["category"]==categories[i],"poptotal"]
,s=20
,c=np.array(plt.cm.tab10(i/len(categories))).reshape(1,-1) #i除以固定的數,來獲得小數
,label=categories[i]
)
plt.legend()
plt.show()
四、解讀影像
解析標籤的含義:第一個字母是平均教育程度的高低(越高的話,我們的標籤就是H)
第二個字母是貧困水平的高低(越窮的話,我們的水平就是H)
第三個字母是城市還是鄉村
基於標籤含義的解析,我們對於圖可以分析出什麼呢?
程式碼如下(示例):
midwest["category"].value_counts()
plt.figure(figsize=(16, 10) #繪圖尺寸
, dpi=60 #影像解析度
, facecolor='w' #影像的背景顏色,設定為白色,預設也是白色
, edgecolor='k' #影像的邊框顏色,設定為黑色,預設也是黑色
)
#進行迴圈繪圖
for i, category in enumerate(categories):
plt.scatter('area', 'poptotal',
data=midwest.loc[midwest.category==category, :],
s=20, c=np.array(plt.cm.tab10(i/float(len(categories)-1))).reshape(1,-1),label=str(category))
#高學歷,低貧困的地方
plt.scatter("area","poptotal",
data = midwest.loc[midwest.category == "HLU",:],
s=300,
facecolors="None",
edgecolors="red",
label = "Selected")
#低學歷,很貧困的地方
#plt.scatter("area","poptotal",
# data = midwest.loc[midwest.category == "LHR",:],
# s=150,
# facecolors="None", #點的填充顏色,為None的時候,表示點是透明的
# edgecolors="red", #點的邊框現在是紅色
# label = "Selected")
#再試試看,高學歷,高貧困的地方?
#學歷低,但很富有的地方?
#對影像進行裝飾
plt.gca().set(xlim=(0.0, 0.12), ylim=(0, 90000)) #控制橫縱座標的範圍
plt.xticks(fontsize=12) #座標軸上的標尺的字的大小
plt.yticks(fontsize=12)
plt.ylabel('Population',fontsize=22) #座標軸上的標題和字型大小
plt.xlabel('Area',fontsize=22)
plt.title("Scatterplot of Midwest Area vs Population", fontsize=22) #整個影像的標題和字型的大小
plt.legend(fontsize=12) #圖例的字型大小
plt.show()
輸出展示:
總結
我們什麼時候會需要散點圖呢?
資料包告 & 學術研究:
展示趨勢:比如產品銷量隨著時間如何變化,智力水平隨著教育程度如何變化等
展現狀態:不同年齡的客戶的成交率,不同生產成本對應的生產員工技能要求
資料探索 & 資料解讀:
探索資料關係,幫助瞭解事實,推動研究
統計學 & 機器學習:
探索資料關係,指導資料預處理和模型選擇
相關文章
- 視覺化執行Python的神器Jupyter Notebook視覺化Python
- Python視覺化(1):折線圖Python視覺化
- Jupyter Notebook
- Python繪圖與視覺化Python繪圖視覺化
- Python視覺化-氣泡圖Python視覺化
- Python視覺化-折線圖Python視覺化
- Python視覺化-地圖染色Python視覺化地圖
- 【Jupyter Notebook】jupyter notebook呼叫另一個.ipynb檔案
- Jupyter 常見視覺化框架選擇視覺化框架
- Jupyter Notebook的使用
- Jupyter Notebook 中同時使用 Python 和 RPython
- jupyter notebook中 切換不同的Python環境Python
- Jupyter Notebook入門指南
- jupyter notebook各種操作
- Jupyter Notebook的安裝
- Jupyter Notebook新增Ruby支援
- 將Python虛擬環境新增到Jupyter Notebook中Python
- Python視覺化-散點圖與彩色散點圖Python視覺化
- pycharm中執行jupyter notebookPyCharm
- Jupyter Notebook 使用與安裝
- Anaconda下安裝Jupyter notebook
- jupyter notebook 刪除指定 kernel
- 搭建jupyter notebook伺服器伺服器
- 為Jupyter Notebook 新增目錄
- jupyter notebook 遠端訪問
- Jupyter notebook快速入門教程
- (資料科學學習手札64)在jupyter notebook中利用kepler.gl進行空間資料視覺化資料科學視覺化
- [資料分析與視覺化] Python繪製資料地圖2-GeoPandas地圖視覺化視覺化Python地圖
- 前端之圖形學-1 資料視覺化前端視覺化
- 【Python】jupyter notebook啟動後網頁無法訪問Python網頁
- Python環境的安裝(Anaconda+Jupyter notebook+Pycharm)PythonPyCharm
- Python資料視覺化之Pygal圖表型別Python視覺化型別
- jupyter notebook外掛環境配置
- Jupyter notebook 新增虛擬環境
- Jupyter notebook 中用 pip 安裝 tensorflow
- Jupyter Notebook修改登陸密碼密碼
- Jupyter可能並非理想的Notebook
- Jupyter Notebook 下安裝 PHP 核心PHP