一次散點圖數據可視化嘗試

前言

今天,群里突然有個小夥伴找人幫忙出個圖

然後我就幫他看看是什麼圖

結果

是個散點圖

原來

他是在做大學生數學建模競賽

他理想的圖是這樣的:

我極力模仿

最後做出來的圖是這樣的:

(他說那個虛線不需要)

開始瞎做

這是一個真實的需求案例(雖然是個比賽,但是數據是比較規範的)

數據如下所示:

一共有835條記錄

目標就是根據經緯度在二維散點圖上定位畫散點

散點根據任務執行情況0還是1用兩種顏色區分

任務標價大小不同散點大小不同

按照他的要求,只需要畫任務標價是65/70/75/80/85的散點

因為我第一次做這種從excel中導入數據繪圖

所以我自己摸索

做的代碼比較傻,hhhh

代碼如下:

import pandas as pddata = pd.read_excel(data_9_16.xls)

註:打開數據文件

看一下文件頭部數據信息:

data.head()

取出一類數據:

data_65_1 = data[(data[任務標價] == 65) & (data[任務執行情況]== 1)]data_65_1.head()

為繪圖準備x y軸數據:

x_65_1 = data_65_1[任務gps經度]y_65_1 = data_65_1[任務gps 緯度]

接下來準備其他組數據(這個過程很傻。。。有沒有更好的辦法,例如做個group by?):

data_65_0 = data[(data[任務標價] == 65) & (data[任務執行情況]== 0)]x_65_0 = data_65_0[任務gps經度]y_65_0 = data_65_0[任務gps 緯度]data_70_0 = data[(data[任務標價] == 70) & (data[任務執行情況]== 0)]x_70_0 = data_70_0[任務gps經度]y_70_0 = data_70_0[任務gps 緯度]data_70_1 = data[(data[任務標價] == 70) & (data[任務執行情況]== 1)]x_70_1 = data_70_1[任務gps經度]y_70_1 = data_70_1[任務gps 緯度]data_75_0 = data[(data[任務標價] == 75) & (data[任務執行情況]== 0)]x_75_0 = data_75_0[任務gps經度]y_75_0 = data_75_0[任務gps 緯度]data_75_1 = data[(data[任務標價] == 75) & (data[任務執行情況]== 1)]x_75_1 = data_75_1[任務gps經度]y_75_1 = data_75_1[任務gps 緯度]data_80_0 = data[(data[任務標價] == 80) & (data[任務執行情況]== 0)]x_80_0 = data_80_0[任務gps經度]y_80_0 = data_80_0[任務gps 緯度]data_80_1 = data[(data[任務標價] == 80) & (data[任務執行情況]== 1)]x_80_1 = data_80_1[任務gps經度]y_80_1 = data_80_1[任務gps 緯度]data_85_0 = data[(data[任務標價] == 85) & (data[任務執行情況]== 0)]x_85_0 = data_85_0[任務gps經度]y_85_0 = data_85_0[任務gps 緯度]data_85_1 = data[(data[任務標價] == 85) & (data[任務執行情況]== 1)]x_85_1 = data_85_1[任務gps經度]y_85_1 = data_85_1[任務gps 緯度]

心累啊

之後終於可以繪圖了:

%matplotlib inlineimport matplotlib.pyplot as pltplt.scatter(x_65_1, y_65_1, marker = o, color = g, label=65_1, s = 10, alpha=0.3)plt.scatter(x_65_0, y_65_0, marker = o, color = r, label=65_0, s = 10, alpha=0.3)plt.scatter(x_70_1, y_70_1, marker = o, color = g, label=70_1, s = 20, alpha=0.3)plt.scatter(x_70_0, y_70_0, marker = o, color = r, label=70_0, s = 20, alpha=0.3)plt.scatter(x_75_1, y_75_1, marker = o, color = g, label=75_1, s = 30, alpha=0.3)plt.scatter(x_75_0, y_75_0, marker = o, color = r, label=75_0, s = 30, alpha=0.3)plt.scatter(x_80_1, y_80_1, marker = o, color = g, label=80_1, s = 40, alpha=0.3)plt.scatter(x_80_0, y_80_0, marker = o, color = r, label=80_0, s = 40, alpha=0.3)plt.scatter(x_85_1, y_85_1, marker = o, color = g, label=85_1, s = 50, alpha=0.3)plt.scatter(x_85_0, y_85_0, marker = o, color = r, label=85_0, s = 50, alpha=0.3)plt.legend(loc = lower right)plt.text(114.25,23.65,Price tag)plt.xlabel(Task GPS longitude) plt.ylabel(Task GPS latitude) plt.show()

註:alpha代表透明度,如果不透明,會出現點相互覆蓋,透明度可以讓其顯示點的聚集情況,顏色深地方點的密度大。

marker是散點的類型(我想找圓圈形狀,但是只能找到圓形,如果有大佬知道,歡迎留言評論,筆芯!)

color代表顏色,r=red紅色,g=green綠色

s代表點的大小

我個人想找legend圖例的標題怎麼設置,奈何沒找到,只能將圖例移到右下角,上方空出位置用text方法加了一個title

(如果有大佬知道legend的title怎麼加,歡迎留言評論,筆芯!)

最終效果如下:

在繪圖過程中,遇到問題要多help

在jupyter notebook中可以使用:

?plt.scatter

看scatter散點圖繪圖方法和參數

用:

import matplotlib ?matplotlib.markers

看可繪製的散點樣式

文章中如有不妥之處請指正~感謝

作者:王大偉 Python愛好者社區唯一小編,請勿轉載,謝謝。

出處:一次散點圖數據可視化嘗試

配套視頻教程:Python3爬蟲三大案例實戰分享:貓眼電影、今日頭條街拍美圖、淘寶美食 Python3爬蟲三大案例實戰分享

公眾號:Python愛好者社區(微信ID:python_shequ),關注,查看更多連載內容。

加小編個人微信:tsdatajob ,跟作者互動,一起探討。

推薦閱讀:

5分鐘教你學會Django系統錯誤監控
Python從零開始系列連載(24)——Python特色數據類型(集合)(上)
Python從零開始系列連載(11)——Python的基本運算和表達式(中二)
PyQt5番外篇(1):PyQt5與Opencv的小小融合
Python:圖片轉字元畫

TAG:Python | Python入门 | Python教程 |