您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)python如何繪制斜率圖進(jìn)行對比分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
斜率圖,可以快速展現(xiàn)兩組數(shù)據(jù)之間各維度的變化,特別適合用于對比兩個時間點的數(shù)據(jù)。
比如說,為了對比分析某產(chǎn)品不同功能的用戶滿意度,經(jīng)過問卷調(diào)查和數(shù)據(jù)統(tǒng)計,得到下面這個調(diào)查結(jié)果:
你不妨自己先思考一下,如何對這組數(shù)據(jù)進(jìn)行可視化,才能讓信息傳遞變得更加高效?
下面是我用 matplotlib 制作的圖表:
從圖中可以直觀地看出,功能 C 的用戶滿意度明顯下降,我們用比較鮮明的橙色來表示,以便引起觀眾重點關(guān)注;功能 D 和功能 E 的用戶滿意度明顯提升,我們用藍(lán)色表示,代表數(shù)據(jù)正在向好的方向發(fā)展;功能 A 和功能 B 的用戶滿意度變化不大,我們用淺灰色表示,以便削弱觀眾對這兩個功能的注意力,把更多的精力用于分析用戶滿意度明顯下降的功能點,從而讓圖表起到提升信息傳遞效率的目的。
首先,導(dǎo)入所需的庫,并設(shè)置中文字體和定義顏色等。
# 導(dǎo)入所需的庫 import numpy as np import pandas as pd import matplotlib as mpl import matplotlib.pyplot as plt import matplotlib.image as image # 正常顯示中文標(biāo)簽 mpl.rcParams['font.sans-serif'] = ['SimHei'] # 自動適應(yīng)布局 mpl.rcParams.update({'figure.autolayout': True}) # 正常顯示負(fù)號 mpl.rcParams['axes.unicode_minus'] = False # 定義顏色,主色:藍(lán)色,輔助色:灰色,互補色:橙色 c = {'藍(lán)色':'#00589F', '深藍(lán)色':'#003867', '淺藍(lán)色':'#5D9BCF', '灰色':'#999999', '深灰色':'#666666', '淺灰色':'#CCCCCC', '橙色':'#F68F00', '深橙色':'#A05D00', '淺橙色':'#FBC171'}
其次,從 Excel 文件中讀取隨機(jī)模擬的數(shù)據(jù),并定義畫圖用的數(shù)據(jù)。
# 數(shù)據(jù)源路徑 filepath='./data/問卷調(diào)查結(jié)果.xlsx' # 讀取 Excel文件 df = pd.read_excel(filepath, index_col='調(diào)查年度') # 定義畫圖用的數(shù)據(jù) category_names = df.columns labels = df.index data = df.values data_cum = data.cumsum(axis=1)
接下來,開始用「面向?qū)ο蟆沟姆椒ㄟM(jìn)行畫圖。
# 使用「面向?qū)ο蟆沟姆椒ó媹D,定義圖片的大小 fig, ax=plt.subplots(figsize=(6, 6)) # 設(shè)置背景顏色 fig.set_facecolor('w') ax.set_facecolor('w') # 設(shè)置標(biāo)題 ax.set_title('\n用戶滿意度隨時間的變化\n', fontsize=26, loc='left', color=c['深灰色']) # 定義顏色 category_colors = [c['淺灰色'], c['淺灰色'], c['橙色'], c['藍(lán)色'], c['藍(lán)色']] # 畫斜率圖 for i, color in zip(np.arange(len(df.columns)), category_colors): ax.plot(df.index, df.iloc[:, i], marker='o', color=color) # 設(shè)置數(shù)據(jù)標(biāo)簽及其文字顏色 ax.text(-0.03, df.iloc[0, i], df.columns[i] + ' ' + '{:.0%}'.format(df.iloc[0, i]), ha='right', va='center', color=color, fontsize=16) ax.text(1.06, df.iloc[1, i], '{:.0%}'.format(df.iloc[1, i]), ha='left', va='center', color=color, fontsize=16) # 設(shè)置 Y 軸刻度范圍 ax.set_ylim(df.values.min()-0.02, df.values.max()+0.01) # 隱藏 Y 軸 ax.yaxis.set_visible(False) # 隱藏邊框 ax.spines['top'].set_visible(False) ax.spines['right'].set_visible(False) ax.spines['left'].set_visible(False) ax.spines['bottom'].set_visible(False) # 隱藏 X 軸的刻度線 ax.tick_params(axis='x', which='major', length=0) # 設(shè)置坐標(biāo)標(biāo)簽字體大小和顏色 ax.tick_params(labelsize=16, colors=c['灰色']) plt.show()
運行之后,便得到上面那張圖。
你可以前往 https://github.com/linjiwx/mp 下載畫圖用的數(shù)據(jù)和完整代碼。
對于同一組數(shù)據(jù),不同的人可能會有不同的觀察視角,對它們進(jìn)行可視化,往往也存在多種不同的解決方案,這里介紹的方法,并不是唯一正確的答案。關(guān)鍵在于,圖表的設(shè)計者想要表達(dá)什么信息?是否讓觀眾正確且快速地理解了想要表達(dá)的信息?
不同類型的圖表,有著不同的優(yōu)勢和劣勢。
斜率圖的優(yōu)勢,是能快速看到每個類別前后發(fā)生的變化,并能根據(jù)線條的陡峭程度,直觀地感受到變化的幅度。
斜率圖的劣勢,是看不出整體與部分的占比關(guān)系。另外,如果類別的順序很重要,那么也不適合使用斜率圖,因為類別會根據(jù)數(shù)值大小自動進(jìn)行排列。
關(guān)于“python如何繪制斜率圖進(jìn)行對比分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。