天天看點

可視化系列(二):Plotly散點圖(上)

歡迎加入我們卧虎藏龍的python讨論qq群:729683466

導  語

久等啦

可視化系列可能會遲到但不會缺席

快拿出小本本記重點

前一期沒掌握好的同學記得複習一下嗷

代碼及相關資源擷取

1、關注"python趣味愛好者"公衆号,回複"plotly散點圖1"

2、加入群聊:729683466,在群檔案中下載下傳源代碼及相關資料。

開發工具

Jupyter Notebook

Plotly子產品

往期精選

可視化系列(一):Plotly簡介及示例

講解部分

前言

上一期我們已經将plotly進行了簡單的介紹,并舉了一些例子;那麼,從這一期開始,我們将正式進行plotly繪圖的介紹。

本期我們介紹的是較為簡單的散點圖,它的樣子相信大家應該都見過,大概就是下面這個樣子:

可視化系列(二):Plotly散點圖(上)

但實際上,plotly繪制的散點圖可不隻是這個樣子哦,它的花樣可多了,保證能讓你大開眼界~

在Plotly中,大部分的圖都是可以通過兩種方式繪制出來的,由于内容較多,是以本小節将隻介紹第一種,第二種方式将在下一節介紹;

可視化系列(二):Plotly散點圖(上)

plotly.express.scatter()

官方大大稱之為資料可視化的進階界面,也是比較常用的一種方法,現在我們就來看看它是怎麼畫圖的,上代碼:

import pandas as pd
import plotly.express as px

names = ["國家", "兒童死亡人數(每千人)", "商品和服務的人均出口", "人均衛生支出總額", "商品和服務的人均進口", "人均純收入",
         "通貨膨脹", "平均壽命", "新生兒數量(每個母親)", "人均國内生産總值"]
df = pd.read_csv("../data/Unsupervised Learning on Country Data/Country-data.csv",
                 header=0,
                 names=names)

fig = px.scatter(data_frame=df,
                 title="國家資料的無監督學習", # 圖的标題
                 x="人均國内生産總值", # x軸
                 y="人均純收入", # y軸
                 color="人均衛生支出總額", # 散點圖的顔色
                 size="平均壽命", # 散點圖的大小
                 hover_name="國家", # 懸停文本的标題
                 hover_data=["兒童死亡人數(每千人)",
                             "商品和服務的人均出口", "通貨膨脹", "新生兒數量(每個母親)"] # 懸停資料
                 )

fig.show()
           

這個段代碼執行後所産生的圖長這個樣子:

可視化系列(二):Plotly散點圖(上)

是不是覺得這個散點圖比上面那個好看多了,當然因為小編的水準也不高,是以這個圖畫的也不是很理想~但是這并不影響它的美觀以及它所能表達的資訊。

好了,那我們開始來介紹一下剛才寫的這些代碼:

import pandas as pd
           

這個是導入pandas庫,用于資料處理的一個強大的第三方庫,這裡用來讀取我們的資料。

import plotly.express as px
           

這個應該不用多解釋了,導入我們需要畫圖的子產品。

names = ["國家", "兒童死亡人數(每千人)", "商品和服務的人均出口", "人均衛生支出總額", "商品和服務的人均進口", "人均純收入",
         "通貨膨脹", "平均壽命", "新生兒數量(每個母親)", "人均國内生産總值"]
df = pd.read_csv("../data/Unsupervised Learning on Country Data/Country-data.csv",
                 header=0,
                 names=names)
           

這幾行代碼是用于讀取資料的,讀取的資料原來長這個樣子:

可視化系列(二):Plotly散點圖(上)

這是從kaggle官網所擷取到的公開資料,因為原本他們的第一行标簽都是英文,是以小編通過官方對這些标簽的解釋,對其進行的翻譯(谷歌翻譯,我啥也不懂~),将翻譯的标簽替換原來的标簽,是以就産生了上面的 names 變量;替換完以後的資料長這樣:

可視化系列(二):Plotly散點圖(上)

1

注意:

使用 pandas 讀取資料時若要對标簽進行替換,首先自己要準備好要替換的内容,一般以清單形式即可,然後使用 names 參數,于此同時,還要标明 header=0!如果不加這個,則會産生以下情況。

可視化系列(二):Plotly散點圖(上)

其他相關 pandas 的用法,同學們可以去它的官網自己看看:https://pandas.pydata.org/

fig = px.scatter(data_frame=df,
                 title="國家資料的無監督學習", # 圖的标題
                 x="人均國内生産總值", # x軸
                 y="人均純收入", # y軸
                 color="人均衛生支出總額", # 散點圖的顔色
                 size="平均壽命", # 散點圖的大小
                 hover_name="國家", # 懸停文本的标題
                 hover_data=["兒童死亡人數(每千人)",
                             "商品和服務的人均出口", "通貨膨脹", "新生兒數量(每個母親)"] # 懸停資料
                 )
           

這裡就是我們正式畫圖的代碼了,可以看到小編已經把每個參數的用法在它們的後面已經進行簡單的解釋了,大家可以自行嘗試一下每一個參數的具體表現,然後根據自己的需求進行舍棄。下面我們對每個參數進行詳細的介紹:

參數一:

data_frame=
           

這個無需多說,就是繪圖的資料源。

參數二:

tltle=
           

繪制出來的圖的标題,可以自己随意命名。

參數三、四:

x=
y=
           

這個是繪圖不可缺少的兩個參數,x 軸和 y 軸所放入的資料,不同的資料都會讓整個圖繪制的大不一樣。

參數五:

color=
           

這個參數用于改變散點圖的顔色,plotly的顔色設定和其他的子產品有點不一樣,它的顔色可以直接用自己的資料來設定顔色,就如上面一樣,我們這裡用的是“人均衛生支出總額”資料,plotly 子產品自動給我們自動找了一種色系來用于表示整個散點圖的顔色。

參數六:

size=
           

這個參數是用于設定每個點的大小,也可以用我們自帶的資料來加以設定,可以看到我們這次使用的是“平均壽命”來設定點的大小,由于各個國家的平均壽命相差不是很大,是以上圖的示範沒有展現出各個點的大小關系,同學們可以自己嘗試使用其他差别較大的資料來設定點的大小,這樣會比較明顯一點。

參數七、八:

hover_name=
hover_data=
           

這兩個參數是關于圖形的懸停資訊的設定,第一個是設定懸停資訊的标題名稱,第二個是設定懸停資訊要顯示的内容,可以使用清單的方式将其他标簽加入其中,進而讓懸停資訊中顯示更加多的内容。

fig.show()
           

這最後一行的作用就是讓整個圖繪制出來,咱也不知道為啥,反正就是要加~

至此,我們這個簡單而又好看的散點圖就大緻完成了。同學們有木有很有成就感~

可視化系列(二):Plotly散點圖(上)

上面我們介紹了 scatter() 的常用參數,接下來我們繼續介紹一下小編認為不是很常用的,但是感覺還是挺有用的一些參數。

參數九:

symbol=
           

這個參數是将散點圖的點用其他的小圖示表示,不過那個小圖示一共好像隻有五個,具體例子如下:

fig = px.scatter(data_frame=df,
                 title="國家資料的無監督學習",
                 x="人均國内生産總值",
                 y="人均純收入",
                 hover_name="國家",
                 
                 symbol="國家"
                 )

fig.show()
           
可視化系列(二):Plotly散點圖(上)

參數十:

text=
           

這個參數的作用是在散點圖中顯示指定的标簽文本,具體例子如下:

fig = px.scatter(data_frame=df,
                 title="國家資料的無監督學習",
                 x="人均國内生産總值",
                 y="人均純收入",
                 hover_name="國家",
                 
                 text="國家"
                 )

fig.show()
           
可視化系列(二):Plotly散點圖(上)

額,這個顯示不是很好,左下角的都糊成一坨了,,,不過我們可以清楚的看到右上角一些稀疏的散點上面有着每個國家的名字,這個參數小編覺得有時候應該挺有用的。

參數十一、十二:

width=
heigth=
           

這兩個參數相信大家一眼就能看出來,用于控制圖形的寬和高的,具體例子如下:

fig = px.scatter(data_frame=df,
                 title="國家資料的無監督學習",
                 x="人均國内生産總值",
                 y="人均純收入",
                 hover_name="國家",
                 
                 width=1000,
                 height=1000
                 )

fig.show()
           
可視化系列(二):Plotly散點圖(上)

參數十三、十四:

log_x=
log_y=
           

這兩個參數的作用為如果它們都為 True ,那麼将把 x,y 軸以對數縮放。這個可能比較難了解,通俗的來講,就是将 x,y 軸的資料進行求對數,然後再進行繪圖,具體例子如下:

fig = px.scatter(data_frame=df,
                 title="國家資料的無監督學習",
                 x="人均國内生産總值",
                 y="人均純收入",
                 hover_name="國家",
                 
                 log_x=True,
                 log_y=True
                 )

fig.show()
           
可視化系列(二):Plotly散點圖(上)

這裡我們可以很明顯的看到,通過對 x,y 軸的資料進行求對數後,原來集中分布在左下角的資料已經變成大緻呈線性分布了,是以說,這兩個參數在某些情況下會産生意想不到的結果。

至此,scatter()的簡單介紹就差不多結束了,我們上面介紹的也隻是它的部分參數,有興趣的同學可以去探索一下它一些其他的參數,這裡給出傳送門:

https://plotly.com/python-api-reference/generated/plotly.express.scatter.html

作者|十丿葉

編輯|潇灑哥

感謝大家觀看

關注我們不迷路噢

可視化系列(二):Plotly散點圖(上)
掃碼關注我們
QQ群:729683466

◰  

參考來源

Plotly官網

https://plotly.com/python/

資料來源

https://www.kaggle.com/