離散型變量的可視化

一、餅圖

需要導(dǎo)入matplotlib模塊中子模塊pyplot中的pie函數(shù)

# 導(dǎo)入第三方模塊
import matplotlib.pyplot as plt

# 構(gòu)造數(shù)據(jù)
edu = [0.2515,0.3724,0.3336,0.0368,0.0057]
labels = ['中專','大專','本科','碩士','其他']

explode = [0,0.1,0,0,0]  # 生成數(shù)據(jù)佳簸,用于突出顯示大專學(xué)歷人群
colors=['#9999ff','#ff9999','#7777aa','#2442aa','#dd5555']  # 自定義顏色

# 中文和數(shù)字中的負(fù)號(hào)通過(guò)rcParams處理
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False

# 將橫乙墙、縱坐標(biāo)軸標(biāo)準(zhǔn)化處理,確保餅圖是一個(gè)正圓,否則為橢圓
plt.axes(aspect='equal')
# 繪制餅圖
plt.pie(x = edu, # 繪圖數(shù)據(jù)
        explode=explode, # 突出顯示大專人群
        labels=labels, # 添加教育水平標(biāo)簽
        colors=colors, # 設(shè)置餅圖的自定義填充色
        autopct='%.1f%%', # 設(shè)置百分比的格式听想,這里保留一位小數(shù)
        pctdistance=0.8,  # 設(shè)置百分比標(biāo)簽與圓心的距離
        labeldistance = 1.1, # 設(shè)置教育水平標(biāo)簽與圓心的距離
        startangle = 180, # 設(shè)置餅圖的初始角度
        radius = 1.2, # 設(shè)置餅圖的半徑
        counterclock = False, # 是否逆時(shí)針腥刹,這里設(shè)置為順時(shí)針?lè)较?        wedgeprops = {'linewidth': 1.5, 'edgecolor':'green'},# 設(shè)置餅圖內(nèi)外邊界的屬性值
        textprops = {'fontsize':10, 'color':'black'}, # 設(shè)置文本標(biāo)簽的屬性值
        )
# 添加圖標(biāo)題
plt.title('失信用戶的受教育水平分布')
# 顯示圖形
plt.show()

二、條形圖

餅圖不擅長(zhǎng)對(duì)比差異不大的離散型變量時(shí)選用條形圖

分為垂直條形圖哗魂、水平條形圖肛走、堆疊條形圖、水平交錯(cuò)條形圖

離散型變量在各水平上的差異就是比較柱形的高低录别,越高值越大

需要導(dǎo)入matplotlib模塊中子模塊pyplot中的bar函數(shù)

1.垂直條形圖

# 條形圖的繪制--垂直條形圖
# 讀入數(shù)據(jù)
import pandas as pd
GDP = pd.read_excel('F:\Province GDP 2017.xlsx')
GDP
# 設(shè)置繪圖風(fēng)格(不妨使用R語(yǔ)言中的ggplot2風(fēng)格),否則背景為白底
plt.style.use('ggplot')
# 繪制條形圖
plt.bar(left = range(GDP.shape[0]), # 指定條形圖x軸的刻度值
        height = GDP.GDP, # 指定條形圖y軸的數(shù)值
        tick_label = GDP.Province, # 指定條形圖x軸的刻度標(biāo)簽
        color = 'steelblue', # 指定條形圖的填充色
       )
# 添加y軸的標(biāo)簽
plt.ylabel('GDP(萬(wàn)億)')
# 添加條形圖的標(biāo)題
plt.title('2017年度6個(gè)省份GDP分布')
# 為每個(gè)條形圖添加數(shù)值標(biāo)簽
#前兩個(gè)參數(shù)用于定位字符在圖形中的位置,第三個(gè)參數(shù)表示呈現(xiàn)的具體字符值邻吞,第四個(gè)參數(shù)表示字符的水平對(duì)齊方式為居中對(duì)齊
for x,y in enumerate(GDP.GDP):
    plt.text(x,y+0.1,'%s' %round(y,1),ha='center')
# 顯示圖形    
plt.show()

2.水平條形圖

上述條形圖按升序處理

# 條形圖的繪制--水平條形圖
# 對(duì)讀入的數(shù)據(jù)作升序排序
GDP.sort_values(by = 'GDP', inplace = True)
# 繪制條形圖
plt.barh(bottom = range(GDP.shape[0]), # 指定條形圖y軸的刻度值
        width = GDP.GDP, # 指定條形圖x軸的數(shù)值
        tick_label = GDP.Province, # 指定條形圖y軸的刻度標(biāo)簽
        color = 'steelblue', # 指定條形圖的填充色
       )
# 添加x軸的標(biāo)簽
plt.xlabel('GDP(萬(wàn)億)')
# 添加條形圖的標(biāo)題
plt.title('2017年度6個(gè)省份GDP分布')
# 為每個(gè)條形圖添加數(shù)值標(biāo)簽
for y,x in enumerate(GDP.GDP):
    plt.text(x+0.1,y,'%s' %round(x,1),va='center')
# 顯示圖形    
plt.show()

水平條形圖的y軸刻度值是從下往上组题,升序即從小到大

3.堆疊條形圖

不管是垂直條形圖還是水平條形圖,只反映單個(gè)離散變量的統(tǒng)計(jì)圖形抱冷,當(dāng)需要傳遞兩個(gè)離散變量時(shí)崔列,用堆疊條形圖,橫坐標(biāo)代表一個(gè)維度的離散變量旺遮,堆疊起來(lái)的”塊“代表另一個(gè)維度的離散變量赵讯,可以方便比較累積和。

# 條形圖的繪制--堆疊條形圖
# 讀入數(shù)據(jù)
Industry_GDP = pd.read_excel('F:\Industry_GDP.xlsx')
Industry_GDP
# 取出四個(gè)不同的季度標(biāo)簽耿眉,用作堆疊條形圖x軸的刻度標(biāo)簽
Quarters = Industry_GDP.Quarter.unique()
# 取出第一產(chǎn)業(yè)的四季度值
Industry1 = Industry_GDP.GPD[Industry_GDP.Industry_Type == '第一產(chǎn)業(yè)']
# 重新設(shè)置行索引
Industry1.index = range(len(Quarters))
# 取出第二產(chǎn)業(yè)的四季度值
Industry2 = Industry_GDP.GPD[Industry_GDP.Industry_Type == '第二產(chǎn)業(yè)']
# 重新設(shè)置行索引
Industry2.index = range(len(Quarters))
# 取出第三產(chǎn)業(yè)的四季度值
Industry3 = Industry_GDP.GPD[Industry_GDP.Industry_Type == '第三產(chǎn)業(yè)']

# 繪制堆疊條形圖
# 各季度下第一產(chǎn)業(yè)的條形圖
plt.bar(left = range(len(Quarters)), height=Industry1, color = 'steelblue', label = '第一產(chǎn)業(yè)', tick_label = Quarters)
# 各季度下第二產(chǎn)業(yè)的條形圖
plt.bar(left = range(len(Quarters)), height=Industry2, bottom = Industry1, color = 'green', label = '第二產(chǎn)業(yè)')
# 各季度下第三產(chǎn)業(yè)的條形圖
plt.bar(left = range(len(Quarters)), height=Industry3, bottom = Industry1  + Industry2, color = 'red', label = '第三產(chǎn)業(yè)')
# 添加y軸標(biāo)簽
plt.ylabel('生成總值(億)')
# 添加圖形標(biāo)題
plt.title('2017年各季度三產(chǎn)業(yè)總值')
# 顯示各產(chǎn)業(yè)的圖例
plt.legend()
# 顯示圖形
plt.show()

分別針對(duì)三種產(chǎn)業(yè)的產(chǎn)值繪制3次條形圖边翼,第二產(chǎn)業(yè)的條形圖是在第一產(chǎn)業(yè)的基礎(chǔ)上做了疊加,第三產(chǎn)業(yè)的條形圖又是疊加在第一和第二產(chǎn)業(yè)之上

取出三個(gè)產(chǎn)業(yè)的值后鸣剪,要重新設(shè)置行索引组底,是因?yàn)楦骷径认旅恳环N產(chǎn)業(yè)值前的行索引都不相同,會(huì)導(dǎo)致無(wú)法進(jìn)行Industry1+Industry2的和計(jì)算

4.水平交錯(cuò)條形圖

可以將堆疊條形圖的”塊“水平排開(kāi)筐骇,可以輕易區(qū)分”塊“之間的差異

import numpy as np
# 取出四個(gè)不同的季度標(biāo)簽债鸡,用作x軸的刻度標(biāo)簽
Quarters = Industry_GDP.Quarter.unique()
# 取出第一產(chǎn)業(yè)的四季度值
Industry1 = Industry_GDP.GPD[Industry_GDP.Industry_Type == '第一產(chǎn)業(yè)']
# 取出第二產(chǎn)業(yè)的四季度值
Industry2 = Industry_GDP.GPD[Industry_GDP.Industry_Type == '第二產(chǎn)業(yè)']
# 取出第三產(chǎn)業(yè)的四季度值
Industry3 = Industry_GDP.GPD[Industry_GDP.Industry_Type == '第三產(chǎn)業(yè)']
# 繪制水平交錯(cuò)條形圖
bar_width = 0.4
plt.bar(left = np.arange(len(Quarters)), height = Industry1, label = 'Industry1', color = 'steelblue', width = bar_width)
plt.bar(left = np.arange(len(Quarters))+bar_width, height = Industry2, label = 'Industry2', color = 'indianred', width = bar_width)
plt.bar(left = np.arange(len(Quarters))+bar_width+bar_width, height = Industry3, label = 'Industry3', color = 'green', width = bar_width)
# 添加刻度標(biāo)簽(向右偏移0.225)
plt.xticks(np.arange(5)+0.4, Quarters)
# 添加y軸標(biāo)簽
plt.ylabel('生成總值(億)')
# 添加圖形標(biāo)題
plt.title('2017年各季度三產(chǎn)業(yè)總值')
# 顯示各產(chǎn)業(yè)的圖例
plt.legend()
# 顯示圖形
plt.show()

如上水平交錯(cuò)條形圖,實(shí)質(zhì)是使用兩次bar函數(shù)铛纬,第二次bar函數(shù)使得條形圖往右偏移0.4個(gè)單位厌均,第三次bar函數(shù)使得條形圖再往右偏移0.4個(gè)單位。

每一個(gè)bar函數(shù)告唆,必須控制條形圖的寬度棺弊,width=bar_width,否則會(huì)導(dǎo)致條形圖的重疊悔详。

使用xticks函數(shù)使刻度標(biāo)簽的位置向右移0.4個(gè)單位

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末镊屎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子茄螃,更是在濱河造成了極大的恐慌缝驳,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異用狱,居然都是意外死亡运怖,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)夏伊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)摇展,“玉大人,你說(shuō)我怎么就攤上這事溺忧。” “怎么了鲁森?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵祟滴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我匙头,道長(zhǎng),這世上最難降的妖魔是什么缩宜? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任释涛,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘暂雹。我一直安慰自己首装,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布杭跪。 她就那樣靜靜地躺著,像睡著了一般驰吓。 火紅的嫁衣襯著肌膚如雪涧尿。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天檬贰,我揣著相機(jī)與錄音姑廉,去河邊找鬼。 笑死翁涤,一個(gè)胖子當(dāng)著我的面吹牛桥言,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播葵礼,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼号阿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了鸳粉?” 一聲冷哼從身側(cè)響起扔涧,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎届谈,沒(méi)想到半個(gè)月后枯夜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡艰山,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年湖雹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片曙搬。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡摔吏,死狀恐怖鸽嫂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情舔腾,我是刑警寧澤溪胶,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站稳诚,受9級(jí)特大地震影響哗脖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扳还,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一才避、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧氨距,春花似錦桑逝、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至首昔,卻和暖如春寡喝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背勒奇。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工预鬓, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赊颠。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓格二,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親竣蹦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子顶猜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容