Matplotlib 中的图例是帮助观察者理解图像数据的重要工具。
图例通常包含在图像中,用于解释不同的颜色、形状、标签和其他元素。

1. 主要参数

当不设置图例的参数时,默认的图例是这样的。

import numpy as np
import matplotlib.pyplot as plt x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x) fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax.plot(x, y1, label="sin")
ax.plot(x, y2, label="cos")
ax.legend()

图例就是右上角的那个部分。
图例的主要参数,其实也就是上例 ax.lengend() 函数的主要参数:

  1. 图例位置相关:loc (位置字符串)
  2. 边框相关:facecolor(背景色),edgecolor(边框颜色),shadow(是否设置阴影)framemon(是否有边框和背景)
  3. 图例的列数:默认是1列多行的格式,ncol(列的个数)

2. 配置示例

通过示例来演示常用的设置。

2.1. 图例位置

fig, ax = plt.subplots(3, 3)
fig.set_size_inches(10, 10) locations = [
["lower left", "lower center", "lower right"],
["center left", "center", "center right"],
["upper left", "upper center", "upper right"],
]
for i in range(3):
for j in range(3):
ax[i, j].plot(x, y1, label="sin")
ax[i, j].plot(x, y2, label="cos")
ax[i, j].legend(loc=locations[i][j])

上面的示例显示了不同位置的图例。

2.2. 图例边框

边框可以设置边框的背景色,边框颜色和是否有阴影。

fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax.plot(x, y1, label="sin")
ax.plot(x, y2, label="cos")
ax.legend(facecolor="lightblue", edgecolor="red", shadow=True)

上例中,背景色 lightblue,边框 red,阴影设置为 True

设置无边框比较简单,frameon=False 即可。

fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax.plot(x, y1, label="sin")
ax.plot(x, y2, label="cos")
ax.legend(frameon=False)

2.3. 图例分列

图例默认都是一列多行的格式,比如上面的的各个示例,图例都是依次竖着排列下来的。
可以通过 ncol 属性,让图例横着排列。

fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax.plot(x, y1, label="sin")
ax.plot(x, y2, label="cos")
ax.legend(frameon=False, loc="upper center", ncol=2)

上面的示例,图例(legend)设置为两列,位于上方中间位置。

2.4. 多个图例

一般的图形都只有一个图例,比如上面的都是这样的,sincos都在一个图例中。
如果图例太多,或者多个图例之间关系不大,也可以创建多个图例。

from matplotlib.legend import Legend

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.sin(x + 1)
y4 = np.cos(x + 1) fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
legends = []
legends += ax.plot(x, y1, label="sin1")
legends += ax.plot(x, y2, label="cos1")
legends += ax.plot(x, y3, label="sin2")
legends += ax.plot(x, y4, label="cos2")
ax.legend(legends[:2], ["sin1", "cos1"], loc="upper right") leg = Legend(ax, legends[2:], ["sin2", "cos2"], loc="lower left")
ax.add_artist(leg)

上面的示例中的4个曲线,分成了2个图例来说明。
一个图例在右上角,一个图例在左下角。

2.5. 图例中不同大小的点

最后,介绍一种更复杂的图例显示方式。

首先生成主要几个省市的人口散点图(数据是网络上搜索的),
生成图例的时候,给3个主要的节点500万人,5000万人,1亿人设置的点的大小比例与图中的各个散点数据保持一致。

x = ["广东", "山东", "江苏",
"湖北", "浙江", "吉林",
"甘肃", "宁夏", "青海", "西藏"]
y = np.array([10432, 9578, 7866,
5723, 5442, 2745,
2557, 630, 562, 300]) fig = plt.figure(figsize=[10, 8])
plt.scatter(x, y, c=np.log10(y), s=y/16) #创建图例
for population in [500, 5000, 10000]:
plt.scatter([],[], c='b',
s=population/16,
alpha=0.3,
label=str(population)+" (万人)") plt.legend(scatterpoints=1,
labelspacing=1.5,
title="人口图例",
frameon=False)

3. 总结

图例可以设置成各式各样,本篇介绍的图例设置方式并不是仅仅为了美观,
更重要的是利用这些设置方式帮助用户能够达成以下目的:

  1. 帮助观察者快速了解图像数据:图例提供了关于图像数据的简洁、易于理解的解释,使得观察者能够快速了解图像的主题和内容。
  2. 帮助观察者更好地理解图像细节:在一些复杂的图像中,观察者可能需要花费很多时间才能理解其中的细节。图例可以提供关于图像细节的额外信息,使得观察者能够更好地理解图像。
  3. 帮助观察者发现图像中的异常或者重要信息:图例可以用于指出图像中的异常或者重要信息,帮助观察者更好地理解和分析图像。

【matplotlib基础】--图例的更多相关文章

  1. Matplotlib基础知识

    Matplotlib基础知识 Matplotlib中的基本图表包括的元素 x轴和y轴 axis水平和垂直的轴线 x轴和y轴刻度 tick刻度标示坐标轴的分隔,包括最小刻度和最大刻度 x轴和y轴刻度标签 ...

  2. Matplotlib基础使用

    matplotlib 一.Matplotlib基础知识 Matplotlib中的基本图表包括的元素 x轴和y轴 axis 水平和垂直的轴线 x轴和y轴刻度 tick 刻度标示坐标轴的分隔,包括最小刻度 ...

  3. 妙方之解决matplotlib的图例里的中文呈现小方形

    妙方之解决matplotlib的图例里的中文呈现小方形 分析思路: 每个中文都对应地呈现一个小方形, 不多也不少. 不能说是乱码. 应该是matplotlib的默认字库不支持中文造成的. 应对办法: ...

  4. 数据分析与展示——Matplotlib基础绘图函数示例

    Matplotlib库入门 Matplotlib基础绘图函数示例 pyplot基础图表函数概述 函数 说明 plt.plot(x,y,fmt, ...) 绘制一个坐标图 plt.boxplot(dat ...

  5. Matplotlib基础图形之散点图

    Matplotlib基础图形之散点图 散点图特点: 1.散点图显示两组数据的值,每个点的坐标位置由变量的值决定 2.由一组不连续的点组成,用于观察两种变量的相关性(正相关,负相关,不相关) 3.例如: ...

  6. matplotlib基础

    Matplotlib 基础 注:本文中的程序都默认引入了numpy库和matplotlib库,并且分别简写为np与plt:如果读者不知道怎么使用numpy库,可以移步到这一博客上进行简单的学习 一.简 ...

  7. 模块简介与matplotlib基础

    模块简介与matplotlib基础 1.基本概念 1.1数据分析 对已知的数据进行分析,提取出一些有价值的信息. 1.2数据挖掘 对大量的数据进行分析与挖掘,得到一些未知的,有价值的信息. 1.3数据 ...

  8. python画图matplotlib基础笔记

    numpy~~基础计算库,多维数组处理 scipy~~基于numpy,用于数值计算等等,默认调用intel mkl(高度优化的数学库) pandas~~强大的数据框,基于numpy matplotli ...

  9. 【Matplotlib】图例分开显示

    作图时图例往往都会出现一个图例框内,如果需要不同类型的图例分别显示,比如显示两个图例. 基本上,出现两个图例的话,需要调用两次 legend .第一次调用,你需要将图例保存到一个变量中,然后保存下来. ...

  10. [笔记]SciPy、Matplotlib基础操作

    NumPy.SciPy.Matplotlib,Python下机器学习三大利器.上一篇讲了NumPy基础操作,这节讲讲SciPy和Matplotlib.目前接触到的东西不多,以后再遇到些比较常用的再更新 ...

随机推荐

  1. 安装vue后 vue -V查不到版本号 添加环境变量没反应

    萌新一枚,今天听老大说后续有项目要用vue,于是找教程自己先看看, 验证vue是否安装成功时,提示 'vue' 不是内部命令,也不是可运行的程序 有说把vue路径添加环境变量的,试了一下,不行(后来看 ...

  2. PowerShell脚本的基础知识

    参考文档https://learn.microsoft.com/zh-cn/powershell/scripting/samples/viewing-object-structure--get-mem ...

  3. JeeCms低代码开发平台了解及认知以及遇到的问题

    1.jeecms低代码开发平台自带标签,使用的标签延续freemarker标签或基于freemarker标签自定的标签(类似自jsp自定义标签) (1)什么是freemarker标签: FreeMar ...

  4. element-ui Tabs 标签页刷新页面状态不丢失

    element-ui Tabs 标签页刷新页面状态不丢失 转载请表明出处 https://www.cnblogs.com/niexianda/p/14765111.html 效果 一般在使用Tabs组 ...

  5. C++ 单例模式的各种坑及最佳实践

    单例模式是设计模式中最简单.常见的一种.其主要目的是确保整个进程中,只有一个类的实例,并且提供一个统一的访问接口.常用于 Logger 类.通信接口类等. 基本原理 限制用户直接访问类的构造函数,提供 ...

  6. CentOS7 配置本地yum源软件仓库

    CentOS7 配置本地yum源软件仓库 前言 配置本地yum源软件仓库可以离线状态下安装本地已有的软件 先连接虚拟光驱,对应的光驱iso文件 查看磁盘分区状态 可以看到sr0 未挂载 [root@l ...

  7. 有懂的没,json对象中 嵌入 json字符串 它规范吗?

    json字符串 和 json对象 1.JSONObject中的String json串中data对应的值是String,String字符串中双引号需要使用反斜杠\进行转义, 痛恨这种, 解析时要进行二 ...

  8. 浅谈 thinkphp composer 扩展包加载原理

    浅谈 thinkphp composer 扩展包加载原理 本文将介绍 ThinkPHP 中 Composer 扩展包的加载原理,帮助读者更好地理解和应用该功能. 前言 如题,今天感觉好久没有更新博客了 ...

  9. 一文了解Go语言的I/O接口设计

    1. 引言 I/O 操作在编程中扮演着至关重要的角色.它涉及程序与外部世界之间的数据交换,允许程序从外部,如键盘.文件.网络等地方读取数据,也能够将外界输入的数据重新写入到目标位置中.使得程序能够与外 ...

  10. 对敏感操作的二次认证 —— 详解 Sa-Token 二级认证

    一.需求分析 在某些敏感操作下,我们需要对已登录的会话进行二次验证. 比如代码托管平台的仓库删除操作,尽管我们已经登录了账号,当我们点击 [删除] 按钮时,还是需要再次输入一遍密码,这么做主要为了两点 ...