一.散點(diǎn)圖的繪制
散點(diǎn)圖的繪制使用的是scatter()方法,傳入的參數(shù)也是兩個(gè)列表,分別為x,y坐標(biāo)軸的值使用散點(diǎn)圖可以顯示若干數(shù)列序列中各數(shù)值之間是否存在相關(guān)性.
二.散點(diǎn)圖繪圖步驟及案例解析
1.導(dǎo)入模塊
from matplotlib import pyplot as plt
import matplotlib
2.設(shè)置散點(diǎn)圖所有字符的字體樣式
matplotlib.rcParams[‘font.family’] = ‘Microsoft Yahei’ # 字體樣式
3.編寫(xiě)主體代碼
from matplotlib import pyplot as plt
import matplotlib
matplotlib.rcParams['font.family'] = 'Microsoft Yahei' # 字體樣式
def draw():
x = [30.1, 29.9, 29.9, 28.1, 28.1, 27.7, 27.6, 27.0, 26.5, 26.4, 26.0,
25.5, 24.6, 24.5, 24.4, 23.4, 23.2, 22.4,
21.6,
21.3, 21.2, 21.0, 20.6, 20.4, 20.3, 20.3, 20.1, 20.1, 20.0, 19.4,
18.6, 18.2, 18.2, 18.2, 18.1, 18.1, 18.1,
18.1,
18.0, 17.9, 17.6, 17.4, 17.3, 17.3, 17.2, 17.1, 17.1, 16.9, 16.7,
16.7]
y = [52.3, 55.2, 48.9, 45.9, 45.7, 50.3, 49.3, 45.1, 58.0, 46.1, 45.3,
43.7, 47.9, 45.3, 52.9, 46.8, 47.3, 49.3,
46.5,
47.6, 46.3, 43.6, 44.3, 44.6, 49.0, 40.8, 41.1, 41.2, 42.5, 44.1,
50.5, 46.0, 45.2, 44.0, 54.2, 48.0, 41.0,
45.8,
40.8, 50.1, 48.3, 41.5, 44.3, 47.9, 63.8, 46.3, 45.2, 39.2, 46.8,
39.3]
z = ['勒布朗-詹姆斯', '揚(yáng)尼斯-阿德托昆博', '喬爾-恩比德', '特雷-楊', '盧卡-東契奇', '德馬爾 - 德羅贊',
'賈 - 莫蘭特', '杰森 - 塔特姆', '尼古拉 - 約基奇', '德文 - 布克', '多諾萬(wàn)-米切爾',
'斯蒂芬-庫(kù)里', '扎克-拉文', '謝伊-吉爾杰斯-亞歷山大', '卡爾-安東尼-唐斯',
'杰倫-布朗', '達(dá)龍-??怂?, '帕斯卡爾-西亞卡姆', '達(dá)里厄斯-加蘭', '吉米-巴特勒', '德章泰-默里',
'安東尼-愛(ài)德華茲', '泰勒-希羅', '克里斯-米德?tīng)栴D', '邁爾斯-布里奇斯', '弗雷德 - 范弗利特',
'朱利葉斯 - 蘭德?tīng)?, 'RJ - 巴雷特', '拉梅洛 - 鮑爾', '特里 - 羅齊爾', '朱 - 霍勒迪',
'德斯蒙德-貝恩', '喬丹-普爾', '拉塞爾-威斯布魯克', '約納斯-瓦蘭丘納斯', '尼古拉 - 武切維奇',
'小加里 - 特倫特', '博揚(yáng) - 波格丹諾維奇', '丹吉洛 - 拉塞爾', '克里斯蒂安 - 伍德',
'托拜厄斯-哈里斯', '凱德-坎寧安', '安芬尼-西蒙斯', '泰雷斯-馬克西', '德安德烈 - 艾頓',
'安德魯 - 威金斯', '凱爾 - 庫(kù)茲馬', '雷吉 - 杰克遜', '哈里森 - 巴恩斯', '科爾 - 安東尼']
# 繪制圖像
plt.figure(figsize=(16, 8), dpi=80)
# 將數(shù)據(jù)繪制到散點(diǎn)圖上
plt.scatter(x, y)
plt.title('NBA2021-2022賽季球員得分榜前50名命名率散點(diǎn)圖', color='red',fontsize=23) # 添加標(biāo)題
plt.xlabel('分?jǐn)?shù)', color='green', fontsize=16) # 添加x軸文字
plt.ylabel('命名率: %', color='green', fontsize=16) # 添加y軸文字
x_ticks = x[::-1] # 得到升序的分?jǐn)?shù)
# 添加x軸的刻度內(nèi)容
plt.xticks(x_ticks[::5] + [max(x)], rotation=45) # 按照步長(zhǎng)為5拿內(nèi)容, 再將最后的一個(gè)數(shù)字放進(jìn)去
y_ticks = range(int(min(y)), int(max(y)) + 1) # 得到命中率的升序
# 添加xy軸的刻度內(nèi)容
plt.yticks(y_ticks[::4]) # 將y軸的刻度內(nèi)容展現(xiàn)出來(lái)
# 將姓名放到圖當(dāng)中付出
n = 0
for i, j in zip(x, y): # 迭代兩個(gè)列表
# x軸坐標(biāo) y軸坐標(biāo) 姓名 字體大小
plt.text(i - 0.5, j + 0.4, z[n], fontsize='10')
n += 1
# 將圖展示出來(lái)
plt.show()
draw()
4.主題代碼解析
for i, j in zip(x, y): # 迭代兩個(gè)列表
# x軸坐標(biāo) y軸坐標(biāo) 姓名 字體大小
plt.text(i - 0.5, j + 0.4, z[n], fontsize=‘10’)
n += 1
這段代碼主要是給每一個(gè)點(diǎn)都寫(xiě)上它的標(biāo)識(shí),這里的zip是matplotlib的一種迭代方法,它可以配合for循環(huán)迭代,將兩個(gè)列表的對(duì)應(yīng)元素打包成一個(gè)個(gè)的元組,然后返回有這些元組組成的列表
[(),(),(),(),(),(),(),()],里面使用text方法把各個(gè)元組對(duì)應(yīng)的點(diǎn)的標(biāo)識(shí)添加上去,上面-0.5和+0.4是因?yàn)橛行┰M對(duì)應(yīng)坐標(biāo)點(diǎn)在我們繪制圖的范圍外.
5.圖形展示
三.條形圖的繪制
使用bar方法,條形圖用來(lái)比較各獨(dú)立類(lèi)別下的某單獨(dú)數(shù)據(jù)的大小
plt.bar(x, height, width)
x: 數(shù)據(jù)的個(gè)數(shù), 可以數(shù)字, 也可以是range對(duì)象
height: 要繪制的數(shù)據(jù)
width: 表示柱狀的寬度, 默認(rèn)為0.8
四.條形圖案例展示
例: 勒布朗.詹姆斯職業(yè)生涯常規(guī)賽平均數(shù)據(jù)條形圖
1.導(dǎo)入模塊
from matplotlib import pyplot as plt
import matplotlib
五.繪制條形圖完整代碼
def main():
# 每賽季的平均得分
height = [20.9, 27.2, 31.4, 27.3, 30.0, 28.4, 29.7, 26.7, 27.1,
26.8, 27.1, 25.3, 25.3, 26.4, 27.5, 27.4, 25.3, 25.0,
30.1]
# 生涯平均得分
avg = sum(height) / len(height)
# 繪制圖像
plt.figure(figsize=(16, 9), dpi=80)
# 將數(shù)據(jù)繪制到柱狀圖上
plt.bar(range(len(height)), height, width=0.4)
# 將生涯平均得分畫(huà)一條折線圖
plt.plot(range(len(height)), [avg for i in range(len(height))],
color='red')
# 添加標(biāo)題
plt.title('勒布朗.詹姆斯職業(yè)生涯常規(guī)賽平均數(shù)據(jù)條形圖', color='red',
fontsize=23)
# 添加x軸文字
plt.xlabel('賽季', color='green', fontsize=16)
# 添加y軸文字
plt.ylabel('分?jǐn)?shù)', color='green', fontsize=16)
# 生成x軸內(nèi)容的列表
x_ticks = ['%d-%d賽季' % (i, i + 1) for i in range(2003, 2022)]
# 添加x軸的刻度內(nèi)容
plt.xticks(range(len(height)), x_ticks, rotation=30)
# 得到一個(gè)range對(duì)象, 起始值是分?jǐn)?shù)最小值, 結(jié)束值是分?jǐn)?shù)是大值, 同時(shí)得把最大值包含進(jìn)去
y_ = range(int(min(height)), int(max(height)) + 2) # 得到命中率的升序
y_ticks = ['%d分' % i for i in y_] # 生成分?jǐn)?shù)的列表內(nèi)容
plt.yticks(y_[::2], y_ticks[::2]) # 將y軸的刻度內(nèi)容展現(xiàn)出來(lái)
# 展示風(fēng)格
plt.grid(alpha=0.3)
# 將圖展示出來(lái)
plt.show()
main()
grid是設(shè)置背景網(wǎng)格的透明度(0-1)
六.條形圖展示
七.多個(gè)條形圖展示
例: 勒布朗.詹姆斯/凱文.杜蘭特職業(yè)生涯常規(guī)賽平均數(shù)據(jù)對(duì)比條形圖
from matplotlib import pyplot as plt
import matplotlib # 載入matplotlib完整庫(kù)
matplotlib.rcParams['font.family'] = 'Microsoft Yahei' # 字體,改為微軟雅黑,默認(rèn) sans-serif
def main():
# 詹姆斯
height1 = [20.9, 27.2, 31.4, 27.3, 30.0, 28.4, 29.7, 26.7, 27.1, 26.8,
27.1, 25.3, 25.3, 26.4, 27.5, 27.4, 25.3, 25.0, 30.3]
# 杜蘭特
height2 = [20.3, 25.3, 30.1, 27.7, 28.0, 28.1, 32.0, 25.4, 28.2, 25.1,
26.4, 26.4, 26.0, 26.9, 29.6]
# 庫(kù)里
height3 = [30, 50.3, 50.1, 47.7, 48.0, 58.1, 62.0, 55.4, 78.2, 45.1,
54, 56.4, 56.0, 56.9, 59.6, 54.8, 52.6, 62.5, 71.3]
# 繪制圖像
plt.figure(figsize=(16, 9), dpi=80)
# 將數(shù)據(jù)繪制到柱狀圖上
# 從x軸不斷往右來(lái)添加數(shù)據(jù), 同時(shí)在原有位置上往右挪0.4
plt.bar([i for i in range(len(height1))], height1, width=0.2,
color='red', label='勒布朗.詹姆斯')
plt.bar([i+0.2 for i in range(len(height2))], height2, width=0.2,
color='green', label='凱文.杜蘭特')
plt.bar([i + 0.4 for i in range(len(height3))], height3, width=0.2,
color='blue', label='史蒂芬.庫(kù)里')
# 添加標(biāo)題
plt.title('勒布朗.詹姆斯/凱文.杜蘭特/史蒂芬.庫(kù)里職業(yè)生涯常規(guī)賽平均數(shù)據(jù)對(duì)比條形圖',
color='red', fontsize=23)
# 添加x軸文字
plt.xlabel('賽季', color='green', fontsize=16)
# 添加y軸文字
plt.ylabel('分?jǐn)?shù)', color='green', fontsize=16)
# 生成x軸內(nèi)容的列表
x_ticks = ['第%d個(gè)賽季' % (i + 1) for i in range(len(height1))]
# 添加x軸的刻度內(nèi)容
plt.xticks(range(len(height1)), x_ticks, rotation=30)
# 得到一個(gè)range對(duì)象, 起始值是分?jǐn)?shù)最小值, 結(jié)束值是分?jǐn)?shù)是大值, 同時(shí)得把最大值包含進(jìn)去
y_ = range(int(min(height1)), int(max(height1)) + 2) # 得到命中率的升序
y_ticks = ['%d分' % i for i in y_] # 生成分?jǐn)?shù)的列表內(nèi)容
plt.yticks(y_[::4], y_ticks[::4]) # 將y軸的刻度內(nèi)容展現(xiàn)出來(lái)
# 展示風(fēng)格
plt.grid(alpha=0.3)
# 展示圖例
plt.legend()
# 將圖展示出來(lái)
plt.show()
main()
1.結(jié)果展示
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-410543.html
八.總結(jié)
本篇文章主要是為了通過(guò)案例的形式,去熟悉matplotlib庫(kù)里面的實(shí)例方法,再者條形圖散點(diǎn)圖以及上篇文章折線圖,其實(shí)他們的主要步驟是一樣的,我們只需要記憶并且熟悉他們不相同的地方,達(dá)到事半功倍的效果,希望本篇文章能夠給你帶來(lái)幫助,感謝支持!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-410543.html
到了這里,關(guān)于python數(shù)據(jù)分析-matplotlib散點(diǎn)圖-條形圖的繪制以及完整方法歸納02的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!