百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python matplotlib绘制折线图(超详细)

off999 2024-10-31 14:02 40 浏览 0 评论

Python matplotlib绘制折线图

matplotlib是Python中的一个第三方库。主要用于开发2D图表,以渐进式、交互式的方式实现数据可视化,可以更直观呈现数据,使数据更具说服力。

一、安装matplotlib

pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

二、matplotlib图像简介

matplotlib的图像分为三层,容器层、辅助显示层和图像层。

1. 容器层主要由Canvas、Figure、Axes组成。

Canvas位于图像的最底层,充当画布的作用。

Figure位于Canvas之上,指画布上的一整张图像。

Axes位于Figure之上,指Figure中的单个图表,一个Figure中可以有一个或多个Axes,即一张图像中可以有一个或多个图表。

2. 辅助显示层是单个图表(Axes)中用来提供辅助信息的层。

辅助显示层主要包括Axes外观(facecolor)、边框线(spines)、坐标轴(axis)、坐标轴名称(axis label)、坐标轴刻度(tick)、坐标轴刻度标签(tick label)、网格线(grid)、图例(legend)、标题(title)等内容。

辅助层可使图像显示更加直观,提高可读性。

3. 图像层指Axes内通过plot、scatter、bar、histogram、pie等函数绘制出的图形。

三、matplotlib绘制折线图

# coding=utf-8
import matplotlib.pyplot as plt
 
 
plt.figure(figsize=(20, 10), dpi=100)
game = ['1-G1', '1-G2', '1-G3', '1-G4', '1-G5', '2-G1', '2-G2', '2-G3', '2-G4', '2-G5', '3-G1', '3-G2', '3-G3',
        '3-G4', '3-G5', '总决赛-G1', '总决赛-G2', '总决赛-G3', '总决赛-G4', '总决赛-G5', '总决赛-G6']
scores = [23, 10, 38, 30, 36, 20, 28, 36, 16, 29, 15, 26, 30, 26, 38, 34, 33, 25, 28, 40, 28]
plt.plot(game, scores)
plt.show()

运行结果:


figure(): 创建图像并设置图像的大小等属性,返回一张图像,可以传入很多参数,常用参数有两个。figsize参数传入一个元组(width, height),设置图像的大小。dpi传入一个整数值,设置图像的清晰度。

plot(): matplotlib中绘制折线图的函数。可以传入很多参数,一般传入两个列表,分别是折线图中的x值和y值。上面的例子中用了NBA2020年季后赛James的得分数据。

show(): 展示图像。

在上面的图表中,x坐标值中有中文,首次使用matplotlib绘图时中文无法正常显示。要解决中文显示问题,需要下载安装SimHei字体或直接搜索SimHei然后找一个正确的网站下载。下载完成后,在Windows下直接解压双击安装。安装完成后删除~/.matplotlib中的缓存文件,并创建配置文件matplotlibrc,将matplotlibrc中的内容设置为如下内容。

font.family : sans-serif

font.sans-serif : SimHei

axes.unicode_minus : False

操作命令如下截图,完成后图像中就可以正常显示中文了。


使用上面的代码,已经实现了简单的折线图,但展示的效果很差,所以需要进行优化,使图像展示得更好。

四、matplotlib优化折线图

import matplotlib.pyplot as plt


plt.figure(figsize=(20, 10), dpi=100)

game = ['1-G1', '1-G2', '1-G3', '1-G4', '1-G5', '2-G1', '2-G2', '2-G3', '2-G4', '2-G5', '3-G1', '3-G2', '3-G3',

'3-G4', '3-G5', '总决赛-G1', '总决赛-G2', '总决赛-G3', '总决赛-G4', '总决赛-G5', '总决赛-G6']

scores = [23, 10, 38, 30, 36, 20, 28, 36, 16, 29, 15, 26, 30, 26, 38, 34, 33, 25, 28, 40, 28]

plt.plot(game, scores, c='red')

plt.scatter(game, scores, c='red')

y_ticks = range(50)

plt.yticks(y_ticks[::5])

plt.grid(True, linestyle='--', alpha=0.5)

plt.xlabel("赛程", fontdict={'size': 16})

plt.ylabel("得分", fontdict={'size': 16})

plt.title("NBA2020季后赛詹姆斯得分", fontdict={'size': 20})

plt.show()

运行结果:


在使用plot()函数绘图时,可以通过c='颜色'来设置折线图的颜色。

scatter(): 绘制散点图。折线图是用直线连接相邻的两个点形成的,但是连成折线后点的显示不明显。scatter可以单独对点进行设置,展示得更明显。

yticks(): 用于设置y轴坐标的范围,传入一个可迭代对象(如range()函数)。最开始绘制的折线图中,图像的y轴坐标范围是数据的范围,坐标原点不是0,使用yticks函数可以设置想要的坐标范围。同理xticks可以用于设置x轴坐标的范围。

grid(): 用于设置图表中的网格线,使用linestyle参数设置网格线的样式,常用的样式有下表中的几种,plot()函数中也可以用linestyle参数设置折线图的样式。使用alpha参数设置网格线的透明度。


xlabel(): 用于设置x轴的标签,说明x轴坐标的含义,第一个参数传入需要设置的标签值,后面可以通过其他参数设置显示的效果,如字体大小等。ylabel同理。

title(): 用于设置折线图的标题,说明这张折线图展示的数据。用法同xlabel。

五、matplotlib绘制多条折线图

import matplotlib.pyplot as plt


plt.figure(figsize=(20, 10), dpi=100)

game = ['1-G1', '1-G2', '1-G3', '1-G4', '1-G5', '2-G1', '2-G2', '2-G3', '2-G4', '2-G5', '3-G1', '3-G2', '3-G3',

'3-G4', '3-G5', '总决赛-G1', '总决赛-G2', '总决赛-G3', '总决赛-G4', '总决赛-G5', '总决赛-G6']

scores = [23, 10, 38, 30, 36, 20, 28, 36, 16, 29, 15, 26, 30, 26, 38, 34, 33, 25, 28, 40, 28]

rebounds = [17, 6, 12, 6, 10, 8, 11, 7, 15, 11, 6, 11, 10, 9, 16, 13, 9, 10, 12, 13, 14]

assists = [16, 7, 8, 10, 10, 7, 9, 5, 9, 7, 12, 4, 11, 8, 10, 9, 9, 8, 8, 7, 10]

plt.plot(game, scores, c='red', label="得分")

plt.plot(game, rebounds, c='green', linestyle='--', label="篮板")

plt.plot(game, assists, c='blue', linestyle='-.', label="助攻")

plt.scatter(game, scores, c='red')

plt.scatter(game, rebounds, c='green')

plt.scatter(game, assists, c='blue')

plt.legend(loc='best')

plt.yticks(range(0, 50, 5))

plt.grid(True, linestyle='--', alpha=0.5)

plt.xlabel("赛程", fontdict={'size': 16})

plt.ylabel("数据", fontdict={'size': 16})

plt.title("NBA2020季后赛詹姆斯数据", fontdict={'size': 20})

plt.show()

运行结果:


六、matplotlib绘制多张折线图

import matplotlib.pyplot as plt


fig, axs = plt.subplots(nrows=1, ncols=3, figsize=(20, 6), dpi=100)

game = ['1-G1', '1-G2', '1-G3', '1-G4', '1-G5', '2-G1', '2-G2', '2-G3', '2-G4', '2-G5', '3-G1', '3-G2', '3-G3',

'3-G4', '3-G5', '总决赛-G1', '总决赛-G2', '总决赛-G3', '总决赛-G4', '总决赛-G5', '总决赛-G6']

scores = [23, 10, 38, 30, 36, 20, 28, 36, 16, 29, 15, 26, 30, 26, 38, 34, 33, 25, 28, 40, 28]

rebounds = [17, 6, 12, 6, 10, 8, 11, 7, 15, 11, 6, 11, 10, 9, 16, 13, 9, 10, 12, 13, 14]

assists = [16, 7, 8, 10, 10, 7, 9, 5, 9, 7, 12, 4, 11, 8, 10, 9, 9, 8, 8, 7, 10]

y_data = [scores, rebounds, assists]

colors = ['red', 'green', 'blue']

line_style = ['-', '--', '-.']

y_labels = ["得分", "篮板", "助攻"]

for i in range(3):

axs[i].plot(game, y_data[i], c=colors[i], label=y_labels[i], linestyle=line_style[i])

axs[i].scatter(game, y_data[i], c=colors[i])

axs[i].legend(loc='best')

axs[i].set_yticks(range(0, 50, 5))

axs[i].grid(True, linestyle='--', alpha=0.5)

axs[i].set_xlabel("赛程", fontdict={'size': 16})

axs[i].set_ylabel(y_labels[i], fontdict={'size': 16}, rotation=0)

axs[i].set_title("NBA2020季后赛詹姆斯{}".format(y_labels[i]), fontdict={'size': 20})

fig.autofmt_xdate()

plt.show()

运行结果:

subplots(): 用于在同一张图像中绘制多张图表,通过nrows, ncols两个参数设置图表的张数和排列方式,figsize和dpi同figure()函数。subplots()函数返回两个参数,一个是图像对象fig,一个是可迭代的图表数组axs(类型为numpy中的数组对象)。

每一张图表中的标签、标题、样式、图例等都需要单独设置,为了避免代码过于冗余,可以使用循环。绘制每一张图表时,从axs中取出每一张图表,再调用plot()函数绘图。在设置坐标轴、标签、标题时,使用'set_'开头的方法进行设置,如设置x轴标签用set_xlabel()。

autofmt_xdate(): x轴坐标值自适应倾斜。因为一张图像中有多张图表,x坐标值靠得很近,可能会因重叠造成展示效果差,使用fig对象的autofmt_xdate()方法可以设置自适应倾斜。

以上就是matplotlib实现折线图的简单介绍,更多设置可以参考官网并多作尝试。

最后,小编想说:我是一名python开发工程师,
整理了一套最新的python系统学习教程,
想要这些资料的可以关注私信小编“01”即可(免费分享哦)希望能对你有所帮助

相关推荐

录音机下载免费安装(录音机下载免费安装到桌面)

现在的手机都是智能机,你想录音机自带可以直接下载一个录音机功能的就可以找到文件管理,看到音乐声音文件夹在里面的自带录音机不用下载,购买的新手机上就已经自带了。如果手机录音怎么下载,那么牛直接可以去...

十大免费加密软件(十大免费加密软件排行榜)
十大免费加密软件(十大免费加密软件排行榜)

照片保险箱是一个超级强大的隐私保护应用,可以安全得隐藏您不想让人看见的照片和视频。照片保险箱采用了独特的文件隐藏保护技术,可以将您珍贵的照片与视频隐藏于一个隐秘空间。不仅如此,它更有着简洁的界面与影像浏览设计,让您可以随时随地愉悦地欣赏您的...

2026-01-19 06:51 off999

免费漫画app下载安装(腾讯漫画免费版下载)

去下载漫游飒飒,官方的,里面不玩游戏也可以直接看漫画,不要钱的,不过现在好像就只有电脑和安卓版,本人喜欢看欧美漫画,无奈大部分软件都没有免费欧美漫画。在此特别向题主推荐《漫画人》,国漫、日韩、欧美全覆...

游戏下载app(youtube官方下载app)

1、Taptap:Taptap是一个比较知名的手游平台,拥有众多的海内外手机游戏,游戏含量都比较高,平台页面简洁,综合有游戏简介与评分评价,可以直接下载游戏,还有更多的游戏社区内容可以浏览。2、九游:...

objective(objective clause)

objective英:[?b?d?ekt?v]美:[?b?d?ekt?v]n.目标;目的;(望远镜或显微镜的)物镜;adj.客观的;就事论事的;不带个人感情的;客观存在的;基于事实的;宾格的;Obje...

qq游戏大厅官方下载正式版官网
  • qq游戏大厅官方下载正式版官网
  • qq游戏大厅官方下载正式版官网
  • qq游戏大厅官方下载正式版官网
  • qq游戏大厅官方下载正式版官网
红警2共和国之辉免费下载(手机版共和国之辉下载)

红警2共和国之辉下载方法如下1、首先打开电脑上的浏览器,在地址栏输入红警之家在官网的地址。2、点击地址栏后面的Go选项进入官网,红警之家,然后点击民国特别选项。3、单击立即下载选项,然后单击弹出页面上...

gif制作软件app(gif制作软件app推荐)

我有一个制作gif动画的exe软件,在电脑上直接打开就能用,如果需要,我可以发你哦!以下手机软件可以给GIF图片加文字:1、GIF制作appGIF制作app是一款专业编辑Gif文件工具,它可以实现gi...

ai绘图免费软件(ai制图软件免费)

推荐使用Procreate应用程序1因为它是一款功能强大的应用程序,具有出色的绘图和动画工具。2Procreate可以在iPad上使用,具有高质量的分辨率和颜色深度,可以创建出色的动画效果。3...

强力恢复数据软件免费版(强力数据恢复软件多少钱)
强力恢复数据软件免费版(强力数据恢复软件多少钱)

效果还是不错的,如果你的苹果手机有重要的数学不小心丟失了,就可以通过强力苹果恢复精灵找回来,而且真对手机不同的数据,都是非常到位的分类包括通讯类,图片以及其他三大版快若您要存储机身内存文件,聊天记录及连系人不慎删除且没有提前备份数据,那个...

2026-01-19 04:51 off999

魔兽地图下载网址(魔兽地图下载网址是什么)

魔兽地图可以通过以下步骤进行下载:打开魔兽地图下载网站,如hiveworkshop.com、epicwar.com等。在网站上搜索您想要下载的地图名称或关键词。找到您想要下载的地图后,点击下载按钮或链...

qq阅读免费版下载(qq阅读免费版下载2019)

有免费栏目,但是一般里面的书都不是很好看。然后有的好看的书有免费章节,比如前面60章是免费的,后面的就开始收费。个人建议,可以开个QQ阅读的会员,QQ阅读会员就有专门的免费专区,里面每周都会更新很多的...

实时变声器(实时变声器下载)

有不少安卓免费变声器软件推荐MorphVOXPro中文版。这是一款非常有趣的语音变声器软件,程序的主要功能可以帮助你在上网用QQ、YY、Skype网络电话或者其他聊天工具进行语音聊天时随心所欲的变换...

汉语大词典电子版(汉语大词典电子版pdf)

《汉语大字典》是当今世界上规模最大、收集汉字单字最多、释义最全的一部汉语字典。全书约2000万字,共收单字56000多个,几乎包括了各种古今文献和图书资料中出现的所有汉字,可以说是汉语字典的集大成者...

什么软件可以看电子书(什么软件看电子书不收费)
  • 什么软件可以看电子书(什么软件看电子书不收费)
  • 什么软件可以看电子书(什么软件看电子书不收费)
  • 什么软件可以看电子书(什么软件看电子书不收费)
  • 什么软件可以看电子书(什么软件看电子书不收费)

取消回复欢迎 发表评论: