当前位置: 首页 > news >正文

【Python】matplotlib设置图片边缘距离和plt.lengend图例放在图像的外侧

一、问题提出

我有这样一串代码:

import matplotlib.pyplot as plt
plt.figure(figsize = (10, 6))
"
此处省略代码
"
legend.append("J")
plt.legend(legend)
plt.xlabel('recall')
plt.ylabel('precision')
plt.grid()
plt.show()

我们得到的图像为:
在这里插入图片描述

二、尝试美化

2.1 改变legend的位置

plt.legend(loc='lower right', fontsize=12, frameon=True, fancybox=True, framealpha=0.2, borderpad=0.3,ncol=1, markerfirst=True, markerscale=1, numpoints=1, handlelength=3.5)

loc:图例位置,可取(‘best’, ‘upper right’, ‘upper left’, ‘lower left’, ‘lower right’, ‘right’, ‘center left’, ‘center , right’, ‘lower center’, ‘upper center’, ‘center’) ;若是使用了bbox_to_anchor,则这项就无效了;

fontsize:int或float或{‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’},字体大小;

frameon:是否显示图例边框;

ncol: 图例的列的数量,默认为1;

title: 为图例添加标题;

shadow: 是否为图例边框添加阴影;

markerfirst: True表示图例标签在句柄右侧,false反之;

markerscale: 图例标记为原图标记中的多少倍大小;

numpoints: 表示图例中的句柄上的标记点的个数,一般设为1;

fancybox: 是否将图例框的边角设为圆形;

framealpha: 控制图例框的透明度;

borderpad: 图例框内边距;

labelspacing: 图例中条目之间的距离;

handlelength: 图例句柄的长度;

bbox_to_anchor: (横向看右,纵向看下),如果要自定义图例位置或者将图例画在坐标外边,用它,比如bbox_to_anchor=(1.4, 0.8),这个一般配合着ax.get_position(),set_position([box.x0, box.y0, box.width*0.8 , box.height])使用;

用不到的参数可以直接去掉,有的参数没写进去,用得到的话加进去 , bbox_to_anchor=(1.11, 0)

例如,我这里只改loc参数:

plt.legend(legend, loc = 'lower right')

在这里插入图片描述

2.2 matplotlib设置图片边缘距离

import matplotlib.pyplot as plt
plt.figure(figsize = (10, 6))
plt.subplots_adjust(left = 0.1, right = 0.7, top = 0.9, bottom = 0.1)
legend = []

我们得到的结果如下图所示:

在这里插入图片描述
可以很明显的看到,右边有很大的空白出来!

2.3 plt.lengend图例放在图像的外侧

num1 = 1.121
num2 = 1.0
num3 = 0
num4 = 0.1
plt.legend(legend, bbox_to_anchor = (num1, num2), loc = num3, borderaxespad = num4)
plt.xlabel('recall')
plt.ylabel('precision')
plt.grid()
plt.show()

在这里插入图片描述
最后大家再继续微调即可!

说明:bbox_to_anchor被赋予的二元组中,num1用于控制legend的左右移动,值越大越向右边移动,num2用于控制legend的上下移动,值越大,越向上移动。用于微调图例的位置。

num1表示水平位置,num2表示垂直位置。

http://www.lryc.cn/news/61719.html

相关文章:

  • oracle 11g等保加固
  • 【设计模式】设计模式之解释器模式
  • leetcode551. 学生出勤记录 I
  • flume拦截器介绍
  • 5.4、服务器编程基本框架和两种高效的事件处理模式
  • Flink主要有两种基础类型的状态:operator state。
  • 【vue2】使用vue-admin-template动态添加路由的思路/addRoutes的使用
  • Python语言中的注释方法应用
  • Google浏览器翻译无法正常使用解决
  • ETCD(三)操作指令
  • 小白学Pytorch系列--Torch.optim API Base class(1)
  • flac格式如何转mp3,3招帮你搞定
  • Redis入门到入土(day01)
  • JVM垃圾回收GC 详解(java1.8)
  • Mybatis-Plus -03 Mybatis-Plus实现CRUD
  • 综合能源系统中基于电转气和碳捕集系统的热电联产建模与优化研究(Matlab代码实现)
  • “智慧赋能 强链塑链”|工程物资供应链管理中的数字化应用
  • 通过docker发布项目
  • 为什么Spring和IDEA不推荐使用@Autowired注解?
  • windows下运行dpdk下的helloworld
  • 【AI理论学习】深入理解Prompt Learning和Prompt Tuning
  • 从Authy中导出账户和secret
  • 图像锐度评分算法,方差,点锐度法,差分法,梯度法
  • 查询练习:连接查询
  • 【mmdeploy】【TODO】使用mmdeploy将mmdetection模型转tensorrt
  • 德赛西威上海车展重磅发布Smart Solution 2.0,有哪些革新点?
  • 戴尔服务器是否需要开启cpupower.service
  • day02_第一个Java程序
  • 【华为OD机试真题 】1011 - 第K个排列 (JAVA C++ Python JS) | 机试题+算法思路+考点+代码解析
  • 基于php的校园校园兼职网站的设计与实现