少即是多!如何在複雜混亂的折線圖中突出一條線(附Python程式碼)

在上文Python資料視覺化例項:關於圖表“貴族”折線的增強最佳化方法中,我們總結了很多關於折線圖的方法和注意事項,有興趣的可以回頭翻看一下。

越是想展示更多,越是容易混亂

在前面的注意事項裡,我們提到有一項叫做

“義大利麵條圖”

,來形容多條折線在一組圖裡的混亂情況。

少即是多!如何在複雜混亂的折線圖中突出一條線(附Python程式碼)

N多條折線錯綜複雜、交叉在一起,根本分不清哪個是重點、哪裡有異常。

少即是多!如何在複雜混亂的折線圖中突出一條線(附Python程式碼)

在實際業務中,很多時候都會遇到這種圖表,比如不同城市在同一個時間內的業務變化情況

少即是多!如何在複雜混亂的折線圖中突出一條線(附Python程式碼)

LOSS IS MOER:少即是多,突出重點

其實業務講究解決問題,圖表的資料自然也應該直接瞄準重點。而不是把所有的資料都堆砌到一張圖表裡。越是簡單直接,越是能加速解讀資料,也能提高商業效率。

少即是多!如何在複雜混亂的折線圖中突出一條線(附Python程式碼)

下面我們來做一組實驗:

這是一張圖滿是汽車的圖片,你第一眼看到它,會先注意或者關注到哪輛車?

少即是多!如何在複雜混亂的折線圖中突出一條線(附Python程式碼)

OK,再來看看這張圖片,你的注意力會集中到哪裡?

少即是多!如何在複雜混亂的折線圖中突出一條線(附Python程式碼)

結論不言而喻,第二張圖留給我們的印象更深刻,更容易吸引我們的注意力。

甚至我們會產生興趣,想知道這輛車到底跑的多快,什麼品牌等等。

這也正是因為我們眼睛和注意力的承載力有限,比如看股市圖表,一般人是受不了這些密密麻麻的。

少即是多!如何在複雜混亂的折線圖中突出一條線(附Python程式碼)

所以我們更喜歡簡單明瞭的東西,它理解起來更快,當然也容易被忽悠和利用。

少即是多!如何在複雜混亂的折線圖中突出一條線(附Python程式碼)

同樣的道理,就是文章→圖表→長影片→短影片→大標題,越是簡單直接,越是惹人關注!

看看圖表中如何解決“義大利麵條圖”

OK,下面我們來看看如何利用這個原則來解決雜亂圖表的問題

資料為模擬資料,主要是為了演示效果,沒有具體商業意義。

少即是多!如何在複雜混亂的折線圖中突出一條線(附Python程式碼)

準備工作

少即是多!如何在複雜混亂的折線圖中突出一條線(附Python程式碼)

import pandas as pd import numpy as npimport matplotlibimport matplotlib。pyplot as pltimport seaborn as sns%matplotlib inline# 引入pandas、matplotlib、seaborn包import sys# 引入系統模組庫import os# 引入檔案/目錄方法庫print(sys。version)print(‘——————’)print(pd。__version__)

少即是多!如何在複雜混亂的折線圖中突出一條線(附Python程式碼)

## 初始字型設定,設定好可避免很多麻煩plt。rcParams[‘font。sans-serif’]=[‘Source Han Sans CN’] # 顯示中文不亂碼,思源黑體 plt。rcParams[‘font。size’] = 22 # 設定圖表全域性字型大小,後期某個元素的字型大小可以自行調整plt。rcParams[‘axes。unicode_minus’] = False # 顯示負數不亂碼## 初始化圖表大小plt。rcParams[‘figure。figsize’] = (20。0, 8。0) # 設定figure_size尺寸## 初始化圖表解析度質量plt。rcParams[‘savefig。dpi’] = 300 # 設定圖表儲存時的畫素解析度plt。rcParams[‘figure。dpi’] = 300 # 設定圖表繪製時的畫素解析度## 圖表的顏色自定義colors = [‘#dc2624’, ‘#2b4750’, ‘#45a0a2’, ‘#e87a59’, ‘#7dcaa9’, ‘#649E7D’, ‘#dc8018’, ‘#C89F91’, ‘#6c6d6c’, ‘#4f6268’, ‘#c7cccf’]plt。rcParams[‘axes。prop_cycle’] = plt。cycler( color=colors)path = ‘D:\\系列文章\\’# 自定義檔案路徑,可以自行設定os。chdir(path)# 設定為該路徑為工作路徑,一般存放資料來源檔案

少即是多!如何在複雜混亂的折線圖中突出一條線(附Python程式碼)

Sales_data = pd。read_excel(‘虛擬演示案例資料。xlsx’, sheet_name=‘銷售資料表’)

資料處理和轉化

少即是多!如何在複雜混亂的折線圖中突出一條線(附Python程式碼)

Sales_data = pd。read_excel(‘虛擬演示案例資料。xlsx’, sheet_name=‘銷售資料表’)

少即是多!如何在複雜混亂的折線圖中突出一條線(附Python程式碼)

Sales_data_sum = Sales_data_sum[‘2015-05-01’:‘2015-05-30’]Sales_data_sum

少即是多!如何在複雜混亂的折線圖中突出一條線(附Python程式碼)

City_name = Sales_data_sum[‘門店城市’]。unique()。tolist()One_City_data = Sales_data_sum。loc[Sales_data_sum[‘門店城市’]==‘北京市’]One_City_data

畫出折線圖,並突出顯示北京的資料

少即是多!如何在複雜混亂的折線圖中突出一條線(附Python程式碼)

# 畫出其他城市的折線for i in City_name[1:6]: # 按照城市篩選資料 City_data = Sales_data_sum。loc[Sales_data_sum[‘門店城市’]==i] # 畫出每個城市的折線 plt。plot(City_data。index, City_data[‘購買數量’], color=‘grey’) # 設定為灰色 # 畫出每個城市的資料標籤,如城市名稱 plt。text(City_data。index[-1], City_data[‘購買數量’][-1], i,color=‘grey’) # 設定為灰色 # 畫出重點突出的折線One_City_data = Sales_data_sum。loc[Sales_data_sum[‘門店城市’]==City_name[0]] # 本案例具體是指北京plt。plot(One_City_data。index, One_City_data[‘購買數量’], color=‘orange’, linewidth=4, alpha=0。7)plt。text(One_City_data。index[0], One_City_data[‘購買數量’][0], City_name[0], color=‘orange’)# 設定圖表的其他元素plt。title(“北京5月份銷量變化情況”, loc=‘left’, fontsize=30, fontweight=0, color=‘orange’) # 設定圖表標題plt。xlabel(“時間”) # 設定X軸座標名稱plt。ylabel(“購買數量”) # 設定Y軸座標名稱sns。despine() # 預設無引數狀態,就是刪除上方和右方的邊框,matplotlib貌似做不到plt。show()

少即是多!如何在複雜混亂的折線圖中突出一條線(附Python程式碼)

寫在最後

以上程式碼中,附加了註釋內容。如果不清楚Python語法,建議自學一下。

另外其實這個功能在Excel中只需動動手指修改線條顏色,比起寫程式碼省時間。

喜歡本篇內容,請動動小手轉發和關注一下,我是資料分析師,老海。