网易首页 > 网易号 > 正文 申请入驻

Matplotlib进行数据可视化的快速上手指南

0
分享至

图表是数据探索过程的基础,它们让我们更好地理解我们的数据——例如,帮助识别异常值或所需要做的数据处理或者作为建立机器学习模型提供新的想法和方式。 绘制图表是任何数据科学报告的重要组成部分。

Python 有许多可视化库用于制作静态或动态图。 在本教程中,我将尽力帮助你理解 matplotlib 逻辑。

Matplotlib 是 Python 绘图库的重要组成部分,创建它是为了在 Python 中启用类似 MATLAB 的绘图界面。 如果没有 MATLAB 背景,可能很难理解所有 matplotlib 部分如何协同工作以创建想要的图形。 不过别担心,本教程将把它分解成逻辑组件以快速上手。

图形对象

Matplotlib 是分层的。 Figure 对象由轴(或子图)组成; 每个轴都定义了一个具有不同图对象(标题、图例、刻度、轴)。 下图说明了 matplotlib 图的各种组件。

要创建图形,可以使用“pyplot.figure”函数,或使用“pyplot.add_subplot”函数向图中添加轴。

# import matplotlib and Numpy
import matplotlib.pyplot as plt
import numpy as np
# magic command to show figures in jupyter notebook
%matplotlib inline
# create a figure
fig = plt.figure()
# add axes
ax1 = fig.add_subplot(2, 2, 1)
ax2 = fig.add_subplot(2, 2, 2)
ax3 = fig.add_subplot(2, 2, 3)

在上面的代码片段中,我们定义了一个图形,总共最多包含 4 个图。 我们正在选择四个子图中的三个。

一个简单的方法是使用“plt.subplots”函数创建一个带轴的图形。

fig, axes = plt.subplots(2, 2)
# first subplot
axes[0, 0].scatter(np.arange(40), np.arange(40) + 4 * np.random.randn(40))
# second subplot
axes[0, 1].plot(np.random.randn(40).cumsum())
# third subplot
_ = axes[1, 0].hist(np.random.randn(100), bins=20)
# fourth subplot
axes[1, 1].bar(np.arange(40), np.arange(40) + 4 * np.random.randn(40))
plt.tight_layout()

上图包含不同子图类型。 可以在 matplotlib 文档中找到完整的绘图类型目录。

‘Plt.tight_layout()’函数用于很好地自动间隔子图并避免拥挤。 此外,还可以使用‘plt.subplots_adjust (left = None, bottom = None, top = None, wspace = None, hspace = None)’函数更改图形对象的默认间距。

fig, axes = plt.subplots(2, 2, sharex=True, sharey=True)
for i in range(2):
for j in range(2):
axes[i, j].plot(np.random.randn(40).cumsum())
plt.subplots_adjust(wspace=0, hspace=0)

线型、颜色和标记

“plt.plot”函数可以选择接受一个字符串缩写,表示颜色和线条样式。 例如我们在下面的代码片段中绘制了一条红色虚线。

fig, ax = plt.subplots()
ax.plot(np.random.randn(30), 'r--')

我们可以通过使用linestyle和color属性来指定线型和颜色。

fig, ax = plt.subplots(1, 1)
ax.plot(np.random.randn(30), linestyle='--', color='r')

matplotlib 中可用的线型有:

‘-’: 实线样式
‘ — ‘: 虚线样式
‘-.’: 点划线样式
‘:’ : 虚线样式

除了 matplotlib 提供的颜色缩写之外,我们还可以通过指定其十六进制代码(例如,‘FFFF’)来使用光谱上的任何颜色。

为了绘制线图,matplotlib 在点之间进行插值。可以使用“marker”属性来突出显示实际数据点,如下图所示。

fig, ax = plt.subplots(1, 1)
ax.plot(np.random.randn(30), linestyle='dashed', color='k', marker='o')

默认插值是线性的; 但是可以使用“drawstyle”属性更改它。 下面的示例说明了线性插值和步进后插值。

# data
data = np.random.randn(20).cumsum()
# figure
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4))
ax1.plot(data, 'k--')
ax2.plot(data, 'b-', drawstyle='steps-post')

刻度和标签

ax 对象(子图对象)有不同的方法来自定义绘图:

· ‘Set_xticks’和set_xticklabels’改变x轴刻度;

· ‘Set_yticks’和set_yticklabels’改变y轴刻度;

· Set_title '为绘图添加标题。

fig, ax = plt.subplots(1, 1)
ax.plot(np.random.randn(1000).cumsum())
ticks = ax.set_xticks([0, 200, 400, 600, 800, 1000])
labels = ax.set_xticklabels(['one', 'two', 'three', 'four', 'five', 'six'],
rotation=30, fontsize=12)
ax.set_title('Matplotlib plot')
ax.set_xlabel('Stages', fontsize=12)

另一种设置绘图属性的方法是使用属性字典的“set”方法。

fig, ax = plt.subplots(1, 1)
ax.plot(np.random.randn(1000).cumsum())
props = {
'title': 'Matplotlib title',
'xlabel': 'Stages'
}
ax.set(**props)

在同一图中绘制不同数据时,图例对于识别图元素至关重要。 因此,我们使用标签“label和legend”方法来添加图例。

fig, ax = plt.subplots(1, 1)
ax.plot(np.random.randn(500).cumsum(), 'k', label='First plot')
ax.plot(np.random.randn(500).cumsum(), 'k--', label='Second plot')
ax.plot(np.random.randn(500).cumsum(), 'k.', label='Third plot')
ax.legend(loc='best')

注释

要向子图添加注释,我们可以使用“text”、“arrow”和annotation函数。text会在绘图上的给定坐标 (x, y) 处使用可选的自定义样式绘制文本。

fig, ax = plt.subplots()
ax.plot(np.arange(30), 'k')
ax.text(5, 15, 'Hello world!',
family='monospace', fontsize=10)

“annotation”方法可以将文字和箭头适当排列。

fig, ax = plt.subplots()
ax.plot(np.linspace(0, 10, 200), np.sin(np.linspace(0, 10, 200)))
ax.annotate('Min', xy=(4.7, -1),
xytext=(4.5, -0.5),
arrowprops=dict(facecolor='black', headwidth=6, width=3,
headlength=4),
horizontalalignment='left', verticalalignment='top')
ax.set_title('Annotation example')

Matplotlib 具有代表许多标准形状的对象,称为patches。 像 Rectangle 和 Circle 一样,有些在‘matplotlib.pyplot’中,但整个集合在‘matplotlib.patches’中。

fig, ax = plt.subplots()
rect = plt.Rectangle((0.2, 0.75), 0.4, 0.15, color='k', alpha=0.3)
circ = plt.Circle((0.7, 0.2), 0.15, color='b', alpha=0.3)
pgon = plt.Polygon([[0.15, 0.15], [0.35, 0.4], [0.2, 0.6]],
color='g', alpha=0.5)
ax.add_patch(rect)
ax.add_patch(circ)
ax.add_patch(pgon)

保存图像

可以使用“fig.savefig”将要绘图保存在文件中。 Matplotlib会从文件扩展名推断文件类型。 例如我们使用以下代码来保存图形的 PDF 版本。

fig.savefig(‘figpath.pdf’)

本教程的目标是让你熟悉使用 matplotlib 进行数据可视化的基础知识。 希望本篇文章能够对你的工作有所帮助。

完整代码:https://www.overfit.cn/post/8fdbceaef3ba43bdb92c13e48fb90492

作者:Jaouad Eddadsi

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
知名歌唱家贪财好色嫁大30岁二婚男,如今活成这样

知名歌唱家贪财好色嫁大30岁二婚男,如今活成这样

风月得自难寻
2026-05-12 06:25:42
白酒再次被关注!医生发现:糖尿病者喝白酒,不用多久或有4变化

白酒再次被关注!医生发现:糖尿病者喝白酒,不用多久或有4变化

路医生健康科普
2026-04-10 09:06:17
3-0!祝贺中国U17女足杀进世界杯!4强出炉:挑战朝鲜队+时间如下

3-0!祝贺中国U17女足杀进世界杯!4强出炉:挑战朝鲜队+时间如下

大秦壁虎白话体育
2026-05-11 22:56:06
西班牙一名涉疫邮轮乘客汉坦病毒检测呈阳性

西班牙一名涉疫邮轮乘客汉坦病毒检测呈阳性

国际在线
2026-05-12 06:37:13
问就是运气!网友1.1万拿下3.5万神机:顶配M4 Max MacBook Pro+4TB硬盘

问就是运气!网友1.1万拿下3.5万神机:顶配M4 Max MacBook Pro+4TB硬盘

快科技
2026-05-11 12:41:10
保签失败!白送签位!看傻整个NBA!!

保签失败!白送签位!看傻整个NBA!!

柚子说球
2026-05-11 08:27:42
中国政府奖学金留学人员抵达平壤,正式开启在朝留学生活

中国政府奖学金留学人员抵达平壤,正式开启在朝留学生活

大象新闻
2026-05-11 10:46:07
大快人心!上海地铁“霸道大妈”终被法办,倚老卖老真的不灵了

大快人心!上海地铁“霸道大妈”终被法办,倚老卖老真的不灵了

瓜哥的动物日记
2026-05-12 03:52:39
25岁女子遭丈夫背叛崩溃大哭,引发呼吸性碱中毒,很快失去意识:“与丈夫相恋8年,孩子已3岁”

25岁女子遭丈夫背叛崩溃大哭,引发呼吸性碱中毒,很快失去意识:“与丈夫相恋8年,孩子已3岁”

环球网资讯
2026-05-11 08:15:03
2000吨飞絮惹众怒,一斧子全砍了认错?专家:三大代价承受不起

2000吨飞絮惹众怒,一斧子全砍了认错?专家:三大代价承受不起

小兰聊历史
2026-04-26 11:37:23
河南省人民检察院原巡视员刘新年被开除党籍

河南省人民检察院原巡视员刘新年被开除党籍

界面新闻
2026-05-11 16:01:30
冲2-0!U17国足vs卡塔尔生死战,日主帅:咱还活着 感谢足球之神

冲2-0!U17国足vs卡塔尔生死战,日主帅:咱还活着 感谢足球之神

大秦壁虎白话体育
2026-05-11 10:46:35
特斯拉降价,扯下电动汽车成本的遮羞布——电动车的成本有多低?

特斯拉降价,扯下电动汽车成本的遮羞布——电动车的成本有多低?

社会日日鲜
2026-05-10 09:26:48
穆帅:再说一遍我没和皇马谈过;进不进欧冠不会影响我的未来

穆帅:再说一遍我没和皇马谈过;进不进欧冠不会影响我的未来

懂球帝
2026-05-12 07:05:06
形势有多严峻?曾经的王牌专业凉了!辅导员和教授感到无力和沉重

形势有多严峻?曾经的王牌专业凉了!辅导员和教授感到无力和沉重

慧翔百科
2026-05-09 11:34:26
狗仔记者:特奥在效力米兰期间为队友拉皮条,还长期吸食笑气

狗仔记者:特奥在效力米兰期间为队友拉皮条,还长期吸食笑气

懂球帝
2026-05-12 06:45:11
快船传闻:内部人士透露卡哇伊·莱昂纳德续约或交易的最新消息

快船传闻:内部人士透露卡哇伊·莱昂纳德续约或交易的最新消息

好火子
2026-05-12 04:33:51
北京一男子掏空积蓄,凑500万入股中国人寿,20年后分红吓人

北京一男子掏空积蓄,凑500万入股中国人寿,20年后分红吓人

一刀故事
2025-05-14 13:32:29
存储芯片短缺持续 国内产业链深度受益

存储芯片短缺持续 国内产业链深度受益

财联社
2026-05-12 06:38:13
凌晨咳到吐!全国多地中招“干咳毒株”,患者猜疑新冠病毒新变种

凌晨咳到吐!全国多地中招“干咳毒株”,患者猜疑新冠病毒新变种

谭谈社会
2026-05-08 23:19:21
2026-05-12 09:04:49
deephub incentive-icons
deephub
CV NLP和数据挖掘知识
1990文章数 1461关注度
往期回顾 全部

科技要闻

纳德拉法庭爆料:拒当“AI时代的IBM”

头条要闻

牛弹琴:特朗普要来了 可以肯定这不是一次寻常的访问

头条要闻

牛弹琴:特朗普要来了 可以肯定这不是一次寻常的访问

体育要闻

梁靖崑:可能是最后一届了,想让大家记住这个我

娱乐要闻

“孕妇坠崖案”王暖暖称被霸凌协商解约

财经要闻

特朗普要来了,我们且淡定

汽车要闻

吉利银河“TT”申报图曝光 电动尾翼+激光雷达

态度原创

艺术
本地
旅游
公开课
军事航空

艺术要闻

江青早年电影照曝光,手稿惊艳引热议。

本地新闻

用苏绣的方式,打开江西婺源

旅游要闻

首航售罄,账本承压:“长江行·揽月”号驶入三峡旅游的深水区

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

特朗普:伊朗的回应“完全不可接受”

无障碍浏览 进入关怀版