常规使用legend的方法

1. 自动检测

设置titlelabel标签,随后使用不带参数的legend函数也会自动显示(但不限于一种方式设置图形的label,只要设置了图形的label,使用legend函数会自动显示图例)

import matplotlib as mlp
import matplotlib.pyplot as plt
import numpy as np fg, ax = plt.subplots()
ax.plot([1, 2, 3], [1, 2, 3], label='y = x')
ax.legend(loc='upper left', fontsize='large', title='linear function')
plt.show()

另一种方式(设置某个对象的label属性,可以是各种对象)

import matplotlib as mlp
import matplotlib.pyplot as plt
import numpy as np fg, ax = plt.subplots()
# 必须得加逗号,不然line就是一个列表了
line, = ax.plot([1, 2, 3], [1, 2, 3])
# 结果是<class 'matplotlib.lines.Line2D'>
print(type(line))
# 设置途中的线条标签
line.set_label('y = x')
ax.legend(loc='upper left', fontsize='large', title='linear function')
plt.show()

  • 特别注意

通过在标签以下划线 - 开头的对象上使用标签,可以从自动图例元素选择中排除特定的图表元素。以下划线开头的字符串是所有图表元素的默认标签,因此如果在没有任何参数的情况下调用Axes.legend且没有手动设置标签,将不会绘制图例。例子如下:

import matplotlib as mlp
import matplotlib.pyplot as plt
import numpy as np fg, ax = plt.subplots()
# 必须得加逗号,不然line就是一个列表了
line, = ax.plot([1, 2, 3], [1, 2, 3])
# 结果是<class 'matplotlib.lines.Line2D'>
print(type(line))
# 设置途中的线条标签
line.set_label('_y = x')
ax.legend(loc='upper left', fontsize='large', title='linear function')
plt.show()



2. 明确列出图例中的图表元素和标签

要完全控制哪些图表元素具有图例条目,可以分别传递一个图表元素的可迭代对象和一个图例标签的可迭代对象,例子如下:

  • 绘制sin,cos,线性函数三条曲线,并以明确列出图例中的图表元素和标签设置图例
import matplotlib as mlp
import matplotlib.pyplot as plt
import numpy as np fg, ax = plt.subplots()
x = np.linspace(0, 10, 10000)
y = np.sin(x)
z = np.cos(x)
w = 0.01 * x
# 必须得加逗号,不然line就是一个列表了
sin_curve, = ax.plot(x, y, color='red', linewidth=2)
cos_curve, = ax.plot(x, z, color='blue', linewidth=2)
line, = ax.plot(x, w,color='green', linewidth=2) ax.legend([sin_curve, cos_curve, line], ['y = sin(x)', 'z = cos(x)', 'w = 0.01 * x'], title= 'some function')
plt.show()

另一种方法

import matplotlib as mlp
import matplotlib.pyplot as plt
import numpy as np fg, ax = plt.subplots()
x = np.linspace(0, 10, 10000)
y = np.sin(x)
z = np.cos(x)
w = 0.01 * x
# 必须得加逗号,不然line就是一个列表了
sin_curve, = ax.plot(x, y, color='red', linewidth=2, label = 'sin')
cos_curve, = ax.plot(x, z, color='blue', linewidth=2, label = 'cos')
line, = ax.plot(x, w,color='green', linewidth=2, label = 'line') ax.legend(handles = [sin_curve, cos_curve, line], title= 'some function')
plt.show()

3. 容易造成混乱的一种写法

这种调用方式不被推荐,因为绘图元素与标签之间的关系只能通过它们的顺序隐式地确定,很容易混淆。要为一个Axes上的所有图表元素创建图例,请使用一个字符串的可迭代对象,每个字符串对应一个图例项。例如(下面是错误的实例):

import matplotlib as mlp
import matplotlib.pyplot as plt
import numpy as np fg, ax = plt.subplots()
x = np.linspace(0, 10, 10000)
y = np.sin(x)
z = np.cos(x)
w = 0.01 * x
# 必须得加逗号,不然line就是一个列表了
sin_curve, = ax.plot(x, y, color='red', linewidth=2)
cos_curve, = ax.plot(x, z, color='blue', linewidth=2)
line, = ax.plot(x, w,color='green', linewidth=2) # # 创建图例,使用字符串对应绘图元素的顺序,一定要对应,否则很容易出错
ax.legend(['sin', 'line', 'cos'], title= 'some function')
plt.show()

legend其他参数的设置

1. 位置设置

图例的位置可以通过 loc 参数进行设置。以下是一些常用的位置选项:

'upper left', 'upper right', 'lower left', 'lower right':将图例放置在对应角落。

'upper center', 'lower center', 'center left', 'center right':将图例放置在对应边的中心。'center':将图例放置在坐标轴中心。'best':在已定义的九个位置中,选择与其他元素重叠最小的位置。注意,对于大量数据的图表,此选项可能会降低绘图速度。

2. 图例盒子定位

除了位置,可以使用 bbox_to_anchor 参数来定位图例。以下是一些常见用法:

使用4元组 (x, y, width, height) 指定图例的盒子位置和大小。

使用2元组 (x, y) 指定图例的角落位置,以 loc 为基准。

3. 列数设置

如果图例中的条目过多,可以通过设置 ncols 参数来控制图例的列数,以便更好地排列条目。

4. 字体和标签颜色

可以使用 prop 参数来设置图例的字体属性。同时,通过 labelcolor 参数,可以调整标签的颜色,使其与线条或标记的颜色匹配。

5. 标记数量和大小

numpoints 参数设置图例中标记的数量。

scatterpoints 参数设置散点图图例中标记的数量。

scatteryoffsets 参数设置散点图标记的垂直偏移。

6. 图例背景和边框

可以通过以下参数设置图例的背景和边框样式:

frameon:是否绘制图例的边框。

fancybox:是否启用圆角边框。

shadow:是否在图例后面绘制阴影。

7. 对齐和标题

alignment:设置图例标题和条目框的对齐方式。

title:设置图例的标题。

8. 图例项顺序和拖动

reverse:设置是否反转图例条目顺序。

draggable:设置是否允许通过鼠标拖动图例。

9. 其他细节参数

此外,还有一些其他参数可以进一步细化图例的外观,如边距、间距以及标记的长度和高度等。具体可以查官方文档:

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.legend.html

legend的用法的更多相关文章

  1. matplotlib.legend()函数用法

    用的较多,作为记录 legend语法参数如下: matplotlib.pyplot.legend(*args, **kwargs) 几个暂时主要用的参数: (1)设置图例位置 使用loc参数 plt. ...

  2. layui 常见的表单元素

    第一步:引用文件 效果图(日期.文件上传在下面): <form class="layui-form" action=""> <div clas ...

  3. MATLAB实例:绘制折线图

    MATLAB实例:绘制折线图 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 条形图的绘制见:MATLAB实例:绘制条形图 用MATLAB将几组不同的数 ...

  4. matplotlib---修改图例

    matplotlib.pyplot.legend(*args, **kwargs) 参考文献: [1]python - matplotlib.legend()函数用法解析 - qq_33221533的 ...

  5. matlab的legend用法

    用Matlab画图时,有时候需要对各种图标进行标注,例如,用“+”代表A的运动情况,“*”代表B的运动情况. legend函数的基本用法是: LEGEND(string1,string2,string ...

  6. label 和 legend标签的用法

    label 和 legend标签的用法 label标准用法: 一般浏览器都支持 一般而言,label标签位于表单元素的前面或者后面,为控件提供说明文字 <label for="user ...

  7. html5-fieldset和legend和keygen元素的用法

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  8. matplotlib笔记——legend用法

    rates = [0.01, 0.001, 0.0001] models = {} costs = np.array([[0.7, 0.9, 0.4, 0.6, 0.4, 0.3, 0.2, 0.1] ...

  9. Python中plt.plot()、plt.scatter()和plt.legend函数的用法示例

    参考:http://www.cppcns.com/jiaoben/python/471948.html https://blog.csdn.net/weixin_44825185/article/de ...

  10. matlab画图函数plot()/set/legend

    简单plot()/legend/XY轴范围axis 除了坐标轴信息外还可以添加其它的信息,如所画曲线的信息等:测试代码如下 x=0:pi/20:2*pi; y1=sin(x); y2=cos(x); ...

随机推荐

  1. mysql报错Unknown collation: utf8mb4_0900_ai_ci

    mysql报错Unknown collation: utf8mb4_0900_ai_ci 解决方案: 将文件内的所有 utf8mb4_0900_ai_ci 换成 utf8_general_ci utf ...

  2. WPF入门教程系列二十四——DataGrid使用示例(2)

    WPF入门教程系列目录 WPF入门教程系列二--Application介绍 WPF入门教程系列三--Application介绍(续) WPF入门教程系列四--Dispatcher介绍 WPF入门教程系 ...

  3. 深度学习基础入门篇[8]::计算机视觉与卷积神经网络、卷积模型CNN综述、池化讲解、CNN参数计算

    深度学习基础入门篇[8]::计算机视觉与卷积神经网络.卷积模型CNN综述.池化讲解.CNN参数计算 1.计算机视觉与卷积神经网络 1.1计算机视觉综述 计算机视觉作为一门让机器学会如何去"看 ...

  4. Mac常用文件解压命令

    tar 解压:tar xvf fileName.tar 压缩:tar cvf fileName.tar directoryName rar 1.安装rar 下载RAR https://www.rarl ...

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

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

  6. defcon-quals 2023 crackme.tscript.dso wp

    队友找到的引擎TorqueGameEngines/Torque3D (github.com) 将dso文件放到data/ExampleModule目录下,编辑ExampleModule.tscript ...

  7. 某表格常用api

    这是一个神奇的网站,可作为免费的数据存储平台,已白嫖多年 通过调用接口可以方便的实现增删改查.修改www前缀为vip,还能嫖vip服务器 我常常用来写入程序的日志记录,记录/更新一些关键key 不需要 ...

  8. Hbase的JavaAPI和数据存储

    导入Maven依赖 <dependencies> <dependency> <groupId>org.apache.zookeeper</groupId> ...

  9. 9. SpringMVC处理ajax请求

    9.1.@RequestBody @RequestBody 可以获取请求体信息,使用@RequestBody 注解标识控制器方法的形参,当前请求的请求体就会为当前注解所标识的形参赋值 <!--此 ...

  10. AI室内设计:提升效率、消除沟通障碍,满足客户需求

    前言 免费AI绘图工具:https://www.topgpt.one 随着人工智能(AI)技术的不断发展,室内设计行业也开始受益于这一技术的应用.其中,AI绘画工具在室内设计中的应用正日益受到关注.这 ...