matplotlib基本使用(一)

matplotlib是最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建
为什么要学习matplotlib?

  1. 能将数据进行可视化,更直观的呈现
  2. 使数据更加客观、更具说服力

好了我摊牌了,以上全都是我复制的

csdn上看到大佬做出来这个…………我🍋了

通过下面的小例子我们来看一下matplotlib该如何简单的使用:
假设一天中每隔两个小时(range(2,26,2))的气温(℃)分别是[15, 13, 14.5, 17, 20, 25, 26, 26, 27, 22, 18, 15]

from matplotlib import pyplot as plt 


# x轴和y轴的数据一起组成了所有要绘制出的坐标 -> (2, 15), (4, 13), (6, 14.5), balabalabla.... 
# 数据在x轴的位置,是一个可迭代对象 
x = range(2, 26, 2) 
# 数据在y轴的位置,是一个可迭代对象 
y = [15, 13, 14, 5 , 17, 20, 25, 26, 27, 22, 18, 15] 

# 设置图片大小
# figure图形图标的意思,通过实例化一个figure并且传递参数,能够在后台自动使用该figure实例 
# 在图像模糊的时候可以传入dpi参数,让图片更加清晰 
plt.figure(figsize=(20, 8), dpi=80) 

# 绘图 
plt.plot(x, y) 

# 设置x轴的刻度 
_xtick_labels = [i/2 for i in range(4, 49)] 
plt.xticks(_xtick_labels[::3])  # 刻度太密集我们使用列表的步长来解决 
plt.yticks(range(min(y), max(y) + 1)) 

# 保存 还可以保存成svg这种矢量图 
plt.savefig("./t1.png") 

# 展示 
plt.show() 
很单调,很枯燥的这么一个图,别着急,这只是一个入门小案例……那种特别炫酷的,甚至还会动的,我也不会😁

那么问题来了:

​ 如果列表a表示10点到12点的每一分钟的气温,如何绘制折线图观察每分钟气温的变化情况?

a= [random.randint(20, 35) for i in range(120)]

from matplotlib import pyplot as plt
import random

# 这玩意不支持中文,这句话可以设置一下支持中文的字体
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']

x = range(0, 120)
random.seed(10)  # 设置随机种子,让不同时候随机得到的结果都一样
y = [random.randint(20, 35) for i in range(120)]

plt.figure(figsize=(20, 8), dpi=80)

# 绘图
plt.plot(x, y)

# 设置x轴的刻度
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]
# 取步长,数字和字符串一一对应,数据的长度一样  rotation可以让字符串旋转90°
plt.xticks(list(x)[::3], _xtick_labels[::3], rotation=45)

# 给图像添加描述信息,可以让别人更好的观察数据
plt.xlabel("时间")
plt.ylabel("温度 单位(℃)")
plt.title("10点到12点每分钟的气温变化情况")

# 保存
plt.savefig("./t1.png")

# 展示
plt.show()

可以看到,还是那么的枯燥与单调

好,来点稍微不枯燥的:

​ 假设大家在30岁的时候,根据自己的实际情况,统计出来了从11岁到30岁每年交的女(男)朋友的数量 如列表a,请绘制出该数据的折线图,以便分析自己每年交女(男)朋友的数量走势
a = [1, 0, 1, 1, 2, 4, 3, 2, 3, 4, 4, 5, 6, 5, 4, 3, 3, 1, 1, 1]
要求 y轴表示个数,x轴表示岁数,比如11岁,12岁等

from matplotlib import pyplot as plt

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']

y = [1, 0, 1, 1, 2, 4, 3, 2, 3, 4, 4, 5, 6, 5, 4, 3, 3, 1, 1, 1]
x = range(11, 31)

# 设置图形大小
plt.figure(figsize=(20, 8), dpi=80)

plt.plot(x, y)

# 设置x轴可读
_xtick_labels = ["{}岁".format(i) for i in x]
plt.xticks(x, _xtick_labels)
plt.yticks(range(0, 9))

# 绘制网格 alpha是透明度
plt.grid(alpha=0.4)

# 保存
plt.savefig("./t1.png")

# 展示
plt.show()

我承认这个图还是那个吊样子……别着急,我们开始分析分析

你看奥,14之前咱就不看了,在16岁的时候应该是初入爱河,但是又非常的放荡不羁,所以断断续续交了4个女(男)朋友,
18岁的时候成人了,多多少少成熟了一些,只谈了两个。这时候啊应该上大学了,见到好看的小哥哥小姐姐就像拥有,于是不停地修炼爱情,交往数量成上升趋势。
22岁毕业了,在大学里你已经修炼成了海王,到社会上开始全面撒网,创造了当年谈6个对象的巅峰记录。
再之后随着年龄的增长,玩不动了,逐渐趋于稳定,开始找那么最后一个人 余生鲜衣怒马,陪你看烈焰繁华。

没完呢,怎么滴也得做出个像样的图吧~
现在奥,你已经找到那个满眼都是你的女(男)朋友了,然后你俩闲着没有事想找点刺激。

​ 假设你和你伴侣在30岁的时候,根据自己的实际情况,统计出来了你和Ta各自从11岁到30岁每年交的女(男)朋友的数量如列表a和b,请在一个图中绘制出该数据的折线图,以便比较自己和你身边这个人20年间的差异,同时分析每年交女(男)朋友的数量走势
a = [1, 0, 1, 1, 2, 4, 3, 2, 3, 4, 4, 5, 6, 5, 4, 3, 3, 1, 1, 1]
b = [1, 0, 3, 1, 2, 2, 3, 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1]
要求: y轴表示个数,x轴表示岁数,比如11岁,12岁等

from matplotlib import pyplot as plt

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']

y_1 = [1, 0, 1, 1, 2, 4, 3, 2, 3, 4, 4, 5, 6, 5, 4, 3, 3, 1, 1, 1]
y_2 = [1, 0, 3, 1, 2, 2, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
x = range(11, 31)

# 设置图形大小
plt.figure(figsize=(20, 8), dpi=80)

plt.plot(x, y_1, label="自己", color="orange", linestyle=":")
plt.plot(x, y_2, label="你的女(男)朋友", color="cyan", linestyle='-.')

# 设置x轴可读
_xtick_labels = ["{}岁".format(i) for i in x]
plt.xticks(x, _xtick_labels)

# 绘制网格
plt.grid(alpha=0.4)

# 添加图例
plt.legend(loc="upper left")

# 保存
plt.savefig("./t1.png")

# 展示
plt.show()

作为线性图的替代,可以使用以下格式化字符,在plot函数里的linestyle指定。

字符 描述
'-' 实线样式
'--' 短横线样式
'-.' 点划线样式
':' 虚线样式
'.' 点标记

plt.legend(loc=”upper left”)可以指定图例的位置,我一般直接用best。

继续分析,cyan颜色的那条线是你的伴侣,我喜欢把cyan叫“卡宴。从图片上我们可以看到你的伴侣感情经历就没你丰富,好好珍惜……哎跑题了,

总结一下我们前面都做了什么:

  1. 绘制了折线图(plt.plot)
  2. 设置了图片的大小和分辨率(plt.figure)
  3. 实现了图片的保存(plt.savefig)
  4. 设置了xy轴上的刻度和字符串(xticks)
  5. 解决了刻度稀疏和密集的问题(xticks)
  6. 设置了标题,xy轴的lable(title,xlable,ylable)
  7. 设置了字体(plt.rcParams[‘font.sans-serif’] = [‘Microsoft YaHei’])
  8. 在一个图上绘制多个图形(plt多次plot即可)
  9. 为不同的图形添加图例

matplotlib能够绘制折线图,散点图,柱状图,直方图,箱线图,饼图等。
但是我们需要知道不同的统计图到底能够表示出什么,以此来决定选择哪种统计图来更直观的呈现我们的数据

对比常用统计图

折线图:以折线的上升或下降来表示统计数量的增减变化的统计图

特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)

折线图

直方图:由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据范围,纵轴表示分布情况。

特点:绘制连*续性*的数据,展示一组或者多组数据的分布状况(统计)

直方图

条形图:排列在工作表的列或行中的数据可以绘制到条形图中。

特点:绘制连*离散*的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计)

条形图

散点图:用两组数据构成多个坐标点,考察坐标点的分布,判断两变量
之间是否存在某种关联或总结坐标点的分布模式。

特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)

散点图

正因为天有不测风云, 所以我们要未雨绸缪。
Macsen Chu

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353