电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python數據可視化之用Matplotlib繪制常用圖形

瀏覽:117日期:2022-06-17 15:14:44
目錄一、散點圖二、柱狀圖三、直方圖四、扇形圖總結一、散點圖

散點圖用兩組數據構成多個坐標點,考察坐標點的分布,判斷兩變量之間是否存在某種關聯總結坐標點的分布模式。特點:判斷變量之間是否存在數量關聯趨勢,表示離群點的分布規律。

散點圖繪制

plt.scatter(x,y) # 以默認的形狀顏色繪制散點圖

實例: 假設我們獲取到了上海2020年5,10月份每天白天的最高氣溫(分別位于列表a、b),那么此時如何觀察氣溫和隨時間變化的某種規律。

# 繪制圖形所需的數據y_5 = [11,17,16,11,12,11,12,13,10,14,8,13,12,15,14,17,18,21,16,17,30,14,15,15,15,19,21,22,22,22,23]y_10 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,15,10,11,13,12,13,6]

代碼如下:

import matplotlib.pyplot as plt# 設置字體plt.rcParams[’font.sans-serif’]=[’SimHei’] # 替換sans_serif字體plt.rcParams[’axes.unicode_minus’]=False # 解決坐標軸負數的負號顯示問題plt.figure(figsize=(12,5), dpi=100)y_5 = [11,17,16,11,12,11,12,13,10,14,8,13,12,15,14,17,18,21,16,17,30,14,15,15,15,19,21,22,22,22,23]y_10 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,15,10,11,13,12,13,6]x = range(1, 32)plt.scatter(x, y_5, label=’五月份’)plt.scatter(x, y_10, label=’十月份’)# 增加標題,坐標描述plt.xlabel('時間')plt.ylabel('日期')plt.title('氣溫和隨時間變化的某種規律')# 添加圖形注釋plt.legend(loc=’best’)plt.show()

Python數據可視化之用Matplotlib繪制常用圖形

上圖雖然繪制出5、10月氣溫隨日期的變化,但兩者混在一起,不便于觀察,現通過修改x數據,將10月的坐標點集體往坐標軸右側移動,改進的代碼如下:

import matplotlib.pyplot as plt# 設置字體plt.rcParams[’font.sans-serif’]=[’SimHei’] # 替換sans_serif字體plt.rcParams[’axes.unicode_minus’]=False # 解決坐標軸負數的負號顯示問題plt.figure(figsize=(12,5), dpi=100)y_5 = [11,17,16,11,12,11,12,13,10,14,8,13,12,15,14,17,18,21,16,17,30,14,15,15,15,19,21,22,22,22,23]y_10 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,15,10,11,13,12,13,6]x_5 = range(1, 32)x_10 = range(33, 64)plt.scatter(x_5, y_5, label=’五月份’)plt.scatter(x_10, y_10, label=’十月份’)# 刻度顯示x_t = list(x_4)+list(x_10)x_l = ['5月{}號'.format(i) for i in x_4]x_l += ['10月{}號'.format(i-31) for i in x_10]plt.xticks(x_t[::3], x_l[::3], rotation=45)# 添加圖形注釋plt.legend(loc=’best’)plt.show()

Python數據可視化之用Matplotlib繪制常用圖形

二、柱狀圖

柱狀圖是用寬度相同的條形的高度或長短來表示數據多少的圖形。柱狀圖可以橫置或縱置,縱置時也稱為柱形圖。

特點

能夠直觀反映出各個數據的大小;易于比較數據之間的差別。

柱狀圖繪制

plt.bar(x, width, align=‘center’, **kwargs)

Parameters: x : sequence of scalars.width : scalar or array-like, optional, 柱狀圖的寬度align: {‘center’, ‘edge’}, optional, default: ‘center’Alignment of the bars to the x coordinates:‘center’: Center the base on the x positions.‘edge’: Align the left edges of the bars with the x positions.每個柱狀圖的位置對齊方式, 默認柱狀圖的中心與x坐標中心對齊**kwargs:color: 選擇柱狀圖的顏色

水平條形圖繪制

plt.barh(y, width) # 繪制以y為y軸位置的水平條形圖

實例:假設我們獲取到了2019年內地電影票房前20的電影(列表a)和電影票房數據(列表b),繪制柱狀圖直觀地展示數據,代碼如下:

import matplotlib.pyplot as plt# 設置字體plt.rcParams[’font.sans-serif’]=[’SimHei’] # 替換sans_serif字體plt.rcParams[’axes.unicode_minus’]=False # 解決坐標軸負數的負號顯示問題plt.figure(figsize=(15,10),dpi=100)# 準備電影的名字以及電影的票房數據movie_name = ['流浪地球','復仇者聯盟4:終局之戰','哪吒之魔童降世','瘋狂的外星人', '飛馳人生','蜘蛛俠:英雄遠征','掃毒2天地對決','烈火英雄','大黃蜂', '驚奇隊長','比悲傷更悲傷的故事','哥斯拉2:怪獸之王','阿麗塔:戰斗天使', '銀河補習班','獅子王','反貪風暴4','熊出沒','大偵探皮卡丘','新喜劇之王', '使徒行者2:諜影行動','千與千尋']y = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23,5.22]# 放進橫坐標的數字列表x = range(len(movie_name))# 畫出條形圖# 顏色color參數表示條形圖的順序顏色,可循環plt.bar(x, y, width=0.5, color=[’b’,’r’,’g’,’y’,’c’,’m’,’y’,’k’,’c’,’g’,’g’])# 修改刻度名稱,并旋轉90度plt.xticks(x, movie_name, rotation=90)# 展示圖形plt.show()

Python數據可視化之用Matplotlib繪制常用圖形

# 水平條形圖plt.figure(figsize=(15,10),dpi=100)plt.barh(movie_name, y, color=[’b’,’r’,’g’,’y’,’c’,’m’,’k’])plt.show()

Python數據可視化之用Matplotlib繪制常用圖形

有時候為了公平起見,我們需要對比不同電影首日和首周的票房收入,讓數據更有說服力。假設數據如下:

movie_name = [’雷神3:諸神黃昏’,’正義聯盟’,’尋夢環游記’]first_day = [10587.6,10062.5,1275.7] # 首日票房first_weekend=[36224.9,34479.6,11830] # 首周票房

繪制不同電影首日和首周票房的數據圖,代碼如下:

import matplotlib.pyplot as plt# 設置字體plt.rcParams[’font.sans-serif’]=[’SimHei’] # 替換sans_serif字體plt.rcParams[’axes.unicode_minus’]=False # 解決坐標軸負數的負號顯示問題plt.figure(figsize=(15,10),dpi=100)# 準備數據movie_name = [’雷神3:諸神黃昏’,’正義聯盟’,’尋夢環游記’]# 構造首日票房,首周票房數據first_day = [10587.6,10062.5,1275.7]first_weekend=[36224.9,34479.6,11830]x = range(len(movie_name))# 繪制第一個柱狀圖plt.bar(x, first_day, width=0.25)# 接著繪制第二個柱狀圖plt.bar([i+0.25 for i in x], first_weekend, width=0.25)# 修改刻度名稱# 顯示x軸中文,固定在首日和首周的中間位置plt.xticks([i+0.125 for i in x], movie_name)plt.show()

Python數據可視化之用Matplotlib繪制常用圖形

注意點

x軸坐標刻度顯示位置的調整,既可以通過繪制圖形時調整x數據,也可以通過繪制x軸刻度時調整刻度的方法來實現x軸刻度顯示在兩個柱狀圖中間。如果不做任何調整,它是默認與第一個柱狀圖中間對齊的。

三、直方圖

直方圖,形狀類似柱狀圖卻有著與柱狀圖完全不同的含義。直方圖牽涉統計學的概念,首先要對數據進行分組,然后統計每個分組內數據元的數量。 在坐標系中,橫軸標出每個組的端點,縱軸表示頻數,每個矩形的高代表對應的頻數,稱這樣的統計圖為頻數分布直方圖。

特點:繪制連續性的數據,展示一組或者多組數據的分布情況,用于統計數據分布的特征。

相關概念

組數:在統計數據時,把數據按照不同的范圍分成幾個組,分成的組的個數稱為組數;組距:每一組兩個端點的差。

直方圖繪制

plt.hist(x,bins=None)繪制以x為數值,bins為組數,組數 = 極差/組距

實例:假設我們獲取到了一些電影的時長,繪制直方圖展示電影時長的分布情況,代碼如下:

import matplotlib.pyplot as plt# 設置字體plt.rcParams[’font.sans-serif’]=[’SimHei’] # 替換sans_serif字體plt.rcParams[’axes.unicode_minus’]=False # 解決坐標軸負數的負號顯示問題plt.figure(figsize=(15,10),dpi=100)# 準備數據,電影時長time =[131, 98, 125, 131, 124, 139, 131, 117, 128, 108,135, 138, 131, 102, 107, 114, 119, 128, 121, 142,127, 130, 124, 101, 110, 116, 117, 110, 128, 128,115, 99, 136, 126, 134, 95, 138, 117, 111, 78,132, 124, 113, 150, 110, 117, 86, 95, 144, 105,126, 130,126, 130, 126, 116, 123, 106, 112, 138,123, 86, 101, 99, 136,123, 117, 119, 105, 137,123, 128, 125, 104, 109, 134, 125, 127,105, 120,107, 129, 116, 108, 132, 103, 136, 118, 102, 120,114,105, 115, 132, 145, 119, 121, 112, 139, 125,138, 109, 132, 134,156, 106, 117, 127, 144, 139,139, 119, 140, 83, 110, 102,123,107, 143, 115,136, 118, 139, 123, 112, 118, 125, 109, 119, 133,112, 114, 122, 109, 106, 123, 116, 131, 127, 115,118, 112, 135,115, 146, 137, 116, 103, 144, 83,123, 111, 110, 111, 100, 154,136, 100, 118, 119,133, 134, 106, 129, 126, 110, 111, 109, 141, 120,117, 106, 149, 122, 122, 110, 118, 127, 121, 114,125, 126,114, 140, 103, 130, 141, 117, 106, 114,121, 114, 133, 137, 92,121, 112, 146, 97, 137,105, 98, 117, 112, 81, 97, 139, 113,134, 106,144, 110, 137, 137, 111, 104, 117, 100, 111, 101,110, 105, 129, 137, 112, 120, 113, 133, 112, 83,94, 146, 133, 101, 131, 116, 111, 84, 137, 115,122, 106, 144, 109, 123, 116, 111,111, 133, 150]# 組距bins = 2# 組數,極差/組距groups = int((max(time) - min(time)) / 2)# 繪制直方圖plt.hist(time, groups)# 指定x軸刻度的范圍plt.xticks(list(range(min(time), max(time)))[::2])# 添加坐標描述plt.xlabel(’電影時長大小’)plt.ylabel(’電影的數量’)# 增加網格顯示plt.grid(True, linestyle=’--’, alpha=0.5)plt.show()

Python數據可視化之用Matplotlib繪制常用圖形

四、扇形圖

扇形圖,用整個圓表示總數,用圓內各個扇形的大小表示各部分數量占總數的百分數。

扇形圖繪制

plt.pie(x, explode=None, labels=None)

x:扇形數據explode:設置某幾個分塊是否要分離餅圖labels:每塊扇形標簽autopct:百分比數據標簽shadow:是否顯示陰影plt.pie()有3個返回值:patches:繪制餅圖每一塊的對象texts:文本的列表autotexts:百分比的文本列表

實例:假設我們獲取到了一些電影的排片數據,繪制扇形圖展示電影的排片占比情況,代碼如下:

import matplotlib.pyplot as plt# 設置字體plt.rcParams[’font.sans-serif’]=[’SimHei’] # 替換sans_serif字體plt.rcParams[’axes.unicode_minus’]=False # 解決坐標軸負數的負號顯示問題# 餅圖繪制plt.figure(figsize=(15, 10), dpi=100)# 電影排片數據movie_name = [’雷神3:諸神黃昏’,’正義聯盟’,’東方快車謀殺案’,’尋夢環游記’,’全球風暴’,’降魔傳’,’追捕’,’七十七天’,’密戰’,’狂獸’,’其它’]place_count = [60605,54546,45819,28243,13270,9945,7679,6799,6101,4621,20105]# 繪制扇形圖plt.pie(place_count, labels=movie_name, autopct='%1.2f%%')# 指定顯示的pie是正圓plt.axis(’equal’)# 設置圖例和標題plt.legend(loc='best')plt.title('排片占比情況')plt.show()

Python數據可視化之用Matplotlib繪制常用圖形

扇形圖優化的手段添加陰影,分離特定數據等:

import matplotlib.pyplot as plt# 設置字體plt.rcParams[’font.sans-serif’]=[’SimHei’] # 替換sans_serif字體plt.rcParams[’axes.unicode_minus’]=False # 解決坐標軸負數的負號顯示問題plt.figure(figsize=(15, 10), dpi=100)movie_name = [’雷神3:諸神黃昏’,’正義聯盟’,’東方快車謀殺案’,’尋夢環游記’,’全球風暴’,’降魔傳’,’追捕’,’七十七天’,’密戰’,’狂獸’,’其它’]place_count = [60605,54546,45819,28243,13270,9945,7679,6799,6101,4621,20105]# 繪制扇形圖,添加陰影效果,并讓占比最大的雷神3分離explode = [0.1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]res = plt.pie(place_count, labels=movie_name, explode=explode, autopct='%1.2f%%', shadow=True)patches, texts, autotexts = resprint(patches) # 表示每個扇形的對象print(texts) # 每個文本對象print(autotexts) # 每個百分比對象# 指定顯示的pie是正圓plt.axis(’equal’)# 設置圖例和標題plt.legend(loc='best')plt.title('排片占比情況')plt.show()

打印的扇形圖返回值:

Python數據可視化之用Matplotlib繪制常用圖形

優化后的扇形圖:

Python數據可視化之用Matplotlib繪制常用圖形

總結

本文講述了使用Matplotlib繪制散點圖、柱狀圖、直方圖、扇形圖的基本操作。

到此這篇關于Python數據可視化之用Matplotlib繪制常用圖形的文章就介紹到這了,更多相關Matplotlib繪制圖形內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 培训中心-翰香原香酥板栗饼加盟店总部-正宗板栗酥饼技术 | 电缆故障测试仪_电缆故障定位仪_探测仪_检测仪器_陕西意联电气厂家 | 冷轧机|两肋冷轧机|扁钢冷轧机|倒立式拉丝机|钢筋拔丝机|收线机-巩义市华瑞重工机械制造有限公司 | 糖衣机,除尘式糖衣机,全自动糖衣机,泰州市长江制药机械有限公司 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 沥青灌缝机_路面灌缝机_道路灌缝机_沥青灌缝机厂家_济宁萨奥机械有限公司 | 青海电动密集架_智能密集架_密集架价格-盛隆柜业青海档案密集架厂家 | 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA | 金属切削液-脱水防锈油-电火花机油-抗磨液压油-深圳市雨辰宏业科技发展有限公司 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 空心明胶胶囊|植物胶囊|清真胶囊|浙江绿键胶囊有限公司欢迎您! | 北京西风东韵品牌与包装设计公司,创造视觉销售力! | IHDW_TOSOKU_NEMICON_EHDW系列电子手轮,HC1系列电子手轮-上海莆林电子设备有限公司 | Akribis直线电机_直线模组_力矩电机_直线电机平台|雅科贝思Akribis-杭州摩森机电科技有限公司 | 丁基胶边来料加工,医用活塞边角料加工,异戊二烯橡胶边来料加工-河北盛唐橡胶制品有限公司 | 便携式高压氧舱-微压氧舱-核生化洗消系统-公众洗消站-洗消帐篷-北京利盟救援 | 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 南京技嘉环保科技有限公司-杀菌除臭剂|污水|垃圾|厕所|橡胶厂|化工厂|铸造厂除臭剂 | 水上浮桥-游艇码头-浮动码头-游船码头-码瑞纳游艇码头工程 | 谷歌关键词优化-外贸网站优化-Google SEO小语种推广-思亿欧外贸快车 | 清洁设备_洗地机/扫地机厂家_全自动洗地机_橙犀清洁设备官网 | 杭州翻译公司_驾照翻译_专业人工翻译-杭州以琳翻译有限公司官网 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 | 包装机传感器-搅拌站传感器-山东称重传感器厂家-济南泰钦电气 | 鼓风干燥箱_真空烘箱_高温干燥箱_恒温培养箱-上海笃特科学仪器 | 中宏网-今日新闻-财经新闻 | 骨密度检测仪_骨密度分析仪_骨密度仪_动脉硬化检测仪专业生产厂家【品源医疗】 | 自动检重秤-动态称重机-重量分选秤-苏州金钻称重设备系统开发有限公司 | 德州网站制作 - 网站建设设计 - seo排名优化 -「两山建站」 | 二维运动混料机,加热型混料机,干粉混料机-南京腾阳干燥设备厂 | Boden齿轮油泵-ketai齿轮泵-yuken油研-无锡新立液压有限公司 | 中医中药治疗血小板减少-石家庄血液病肿瘤门诊部| 航空铝型材,7系铝型材挤压,硬质阳*氧化-余润铝制品 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 | 氧化铝球_高铝球_氧化铝研磨球-淄博誉洁陶瓷新材料有限公司 | 齿式联轴器-弹性联轴器-联轴器厂家-江苏诺兴传动联轴器制造有限公司 | PC阳光板-PC耐力板-阳光板雨棚-耐力板雨棚,厂家定制[优尼科板材] | 南京试剂|化学试剂|分析试剂|实验试剂|cas号查询-专业60年试剂销售企业 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 纯水电导率测定仪-万用气体检测仪-低钠测定仪-米沃奇科技(北京)有限公司www.milwaukeeinst.cn 锂辉石检测仪器,水泥成分快速分析仪-湘潭宇科分析仪器有限公司 手术室净化装修-手术室净化工程公司-华锐手术室净化厂家 | 空气能采暖,热泵烘干机,空气源热水机组|设备|厂家,东莞高温热泵_正旭新能源 | 一体化隔油提升设备-餐饮油水分离器-餐厨垃圾处理设备-隔油池-盐城金球环保产业发展有限公司 | 济南网站策划设计_自适应网站制作_H5企业网站搭建_济南外贸网站制作公司_锐尚 |