legend的用法
常规使用legend的方法
1. 自动检测
设置
title的label标签,随后使用不带参数的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的用法的更多相关文章
- matplotlib.legend()函数用法
用的较多,作为记录 legend语法参数如下: matplotlib.pyplot.legend(*args, **kwargs) 几个暂时主要用的参数: (1)设置图例位置 使用loc参数 plt. ...
- layui 常见的表单元素
第一步:引用文件 效果图(日期.文件上传在下面): <form class="layui-form" action=""> <div clas ...
- MATLAB实例:绘制折线图
MATLAB实例:绘制折线图 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 条形图的绘制见:MATLAB实例:绘制条形图 用MATLAB将几组不同的数 ...
- matplotlib---修改图例
matplotlib.pyplot.legend(*args, **kwargs) 参考文献: [1]python - matplotlib.legend()函数用法解析 - qq_33221533的 ...
- matlab的legend用法
用Matlab画图时,有时候需要对各种图标进行标注,例如,用“+”代表A的运动情况,“*”代表B的运动情况. legend函数的基本用法是: LEGEND(string1,string2,string ...
- label 和 legend标签的用法
label 和 legend标签的用法 label标准用法: 一般浏览器都支持 一般而言,label标签位于表单元素的前面或者后面,为控件提供说明文字 <label for="user ...
- html5-fieldset和legend和keygen元素的用法
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- 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] ...
- Python中plt.plot()、plt.scatter()和plt.legend函数的用法示例
参考:http://www.cppcns.com/jiaoben/python/471948.html https://blog.csdn.net/weixin_44825185/article/de ...
- matlab画图函数plot()/set/legend
简单plot()/legend/XY轴范围axis 除了坐标轴信息外还可以添加其它的信息,如所画曲线的信息等:测试代码如下 x=0:pi/20:2*pi; y1=sin(x); y2=cos(x); ...
随机推荐
- annotate()使用聚合计数、求和、平均数 raw()执行原生的SQL
annotate()使用聚合计数.求和.平均数 raw()执行原生的SQL # 按老师分组,求课程的销量 Course.objects.values('Teacher').annotate(vol= ...
- kubernetes(k8s)大白学习02:容器和docker基础、使用、架构学习
一.什么是容器 容器简介 简单说:容器(container)就是计算机上的一个沙盒进程,它与计算机上的所有其它进程相隔离. 这种隔离是怎么做到的呢?它利用了内核提供的 namespace 和 cgro ...
- 解密Prompt系列8. 无需训练让LLM支持超长输入:知识库 & unlimiformer & PCW & NBCE
这一章我们聊聊有哪些方案可以不用微调直接让大模型支持超长文本输入,注意这里主要针对无限输入场景.之前在BERT系列中我们就介绍过稀疏注意力和片段递归的一些长文本建模方案长文本建模 BigBird &a ...
- 《最新出炉》系列初窥篇-Python+Playwright自动化测试-3-离线搭建playwright环境
1.简介 有些小伙伴或者童鞋们私信留言说自己是在公司局域网办公,或者公司为了安全对网络管控比较严格(尤其是一些大的国企.央企),总之就是一句话无法连到外网去在线下载,宏哥刚看到留言时觉得这问题还留言问 ...
- Windows11右键菜单修改为Win10模式的方法
Windows11右键菜单修改为Win10模式的方法 自述: 更新win11后看着鼠标右键的菜单有些不太舒服,索性就改回了win10的右键菜单的样式 , 下面开始进行操作 第一步 首先以管理员方式打开 ...
- Spring MVC 前后台传递json格式数据 Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
若使用默认的json转换器,则需要如下包: <mvc:annotation-driven /> 报错如下: Content type 'application/x-www-form-url ...
- Spring Loaded代码热更新实践和原理分析
1.引言 开发者在编码效率和快速迭代中的痛点场景包括: 修改代码后,需要频繁重启应用,导致开发效率低下: 实时调试时,不能立即看到代码修改的结果: 大型项目中,重启的时间成本较高. 针对这些问题,本文 ...
- Visual Studio Code调试和发布ASP.NET Core Web应用
前言 上一篇文章主要讲了Visual Studio Code安装C#开发工具包并编写ASP.NET Core Web应用有兴趣的同学可以去看看,今天咱们主要是要讲讲如何在VS Code中调试和发布AS ...
- 用googletest写cpp单测
框架概述 Google Test(也称为 googletest)是由 Google 开发的 C++ 单元测试框架.它的首个版本是在2004年发布的,作为 Google 内部的测试框架使用.随后,Goo ...
- dash构建多页应用
dash 构建多页面应用一种方案 本方案对dash官网多页面案例使用dash_bootstrap_components案例进行优化与测试,效果如下 项目代码结构如下 │ app.py │ ├─asse ...