matplotlib绘制局部放大图
导入工具包
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.patches import ConnectionPatch
from mpl_toolkits.axes_grid1.inset_locator import inset_axes
配置matplotlib字体
config = {"font.family": "SimSun","font.size": 14,"mathtext.fontset": "stix"}
mpl.rcParams.update(config)
导入数据
x_data = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
y_data_1 = [8.179,7.345,7.029,6.751,6.611,6.507,6.319,6.196,6.086,6.006,5.923,5.81,5.76,5.705,5.644,5.583,5.523,5.436,5.485,5.378,5.343,5.309,5.257,]
y_data_2 = [7.191,6.637,6.292,6.112,6.094,5.74,5.709,5.667,5.583,5.506,5.41,5.307,5.239,5.303,5.282,5.11,5.075,5.083,4.971,4.976,4.993,4.963,5.138]
创建画布
fig, ax = plt.subplots(1, 1)
绘图
ax.plot(x_data, y_data_1, linestyle=":",color="r", linewidth=1.5,marker="o",markersize=5,markeredgecolor="black",markerfacecolor="C3")ax.plot(x_data, y_data_2, linestyle=":",color="g", linewidth=1.5,marker="o",markersize=5,markeredgecolor="black",markerfacecolor="C2")
ax.legend(labels=["训练集", "测试集"], ncol=2, loc="lower left")
plt.xlabel("训练轮次", fontsize=14, fontdict={"family": "SimSun", "size": 14})
plt.ylabel("损失", fontsize=14, fontdict={"family": "SimSun", "size": 14})
在大图上绘制要放大的区域
sx = [20, 24, 24, 20, 20]
sy = [4.9, 4.9, 5.5, 5.5, 4.9]
plt.plot(sx, sy, lw=2, c="black")
插入子坐标并绘图
axins = inset_axes(ax, width="40%", height="30%", loc='lower left',bbox_to_anchor=(0.4, 0.6, 1, 1),bbox_transform=ax.transAxes)
axins.plot(x_data, y_data_1, linestyle=":",color="r", linewidth=1.5,marker="o",markersize=5,markeredgecolor="black",markerfacecolor="C3")
axins.plot(x_data, y_data_2, linestyle=":",color="g", linewidth=1.5,marker="o",markersize=5,markeredgecolor="black",markerfacecolor="C2")
axins.set_xlim(20, 24)
axins.set_ylim(4.9, 5.5)
给极值处添加标签
axins.annotate("训练集上的最小损失5.257",ha="center",va="bottom",xytext=(20, 5.2),xy=(24, 5.257),arrowprops={'facecolor': 'red', 'shrink': 0.05}
)
axins.annotate("测试集上的最小损失4.963",ha="center",va="bottom",xytext=(20, 5.05),xy=(23, 4.963),arrowprops={'facecolor': 'red', 'shrink': 0.05}
)
绘制放大图与原图像之间的连线
xy = (20, 5.5)
xy2 = (20, 4.9)
con = ConnectionPatch(xyA=xy2, xyB=xy, coordsA="data", coordsB="data",axesA=axins, axesB=ax)
axins.add_artist(con)xy = (24, 5.5)
xy2 = (24, 4.9)
con = ConnectionPatch(xyA=xy2, xyB=xy, coordsA="data", coordsB="data",axesA=axins, axesB=ax)
axins.add_artist(con)
保存图像
plt.savefig("loss.PNG", dpi=300, bbox_inches="tight")
plt.show()
matplotlib绘制局部放大图相关推荐
- matplotlib绘制图表,设置刻度标签、最大最小刻度、字体大小,label位置、刻度轴箭头等
matplotlib绘制图表,设置刻度标签.最大最小刻度.字体大小,label位置.刻度轴箭头等 1. 效果图 2. 源码 2.1 仅使用普通轴ax + fontdict 源码 2.2 使用mpl设置 ...
- 使用KMeanCluster对多个区域进行聚类,并结合Matplotlib绘制中心点、最大最小距离点
使用KMeanCluster对多个区域进行聚类,并结合Matplotlib绘制中心点.最大最小距离点 1. 效果图 2. 源码 2.1 原始数据--xq.txt 2.2 源码 参考 这篇博客将演示如何 ...
- Matplotlib绘制象限图——支持中文、箭头、自定义轴线交点
Matplotlib绘制象限图--支持中文.箭头.自定义轴线交点 1. 效果图 2. 原理 2.1 绘制象限图步骤 2.1 添加文字到图表 3. 源码 参考 这篇博客将介绍如何使用matplotlib ...
- python绘制三维轨迹_Python学习(一) —— matplotlib绘制三维轨迹图
在研究SLAM时常常需要对其输出的位姿进行复现以检测算法效果,在ubuntu系统中使用Python可以很好的完成相关的工作. 一. Ubuntu下Python的使用 在Ubuntu下使用Python有 ...
- python使用matplotlib绘制一条正弦曲线(plot函数可视化sine plot)
python使用matplotlib绘制一条正弦曲线(plot函数可视化sine plot) 目录 python使用matplotlib绘制一条正弦曲线(plot函数可视化sine plot) #导入 ...
- Python使用matplotlib绘制透明背景的可视化图像并保存透明背景的可视化结果(transparent background)
Python使用matplotlib绘制透明背景的可视化图像并保存透明背景的可视化结果(transparent background) 目录
- Python使用matplotlib绘制分组对比柱状图(bar plot)可视化时汉语(中文)标签显示成了框框□□、什么情况、我们有解决方案
Python使用matplotlib绘制分组对比柱状图可视化时(bar plot)汉语(中文)标签显示成了框框□□.什么情况.我们有解决方案 目录
- Python使用matplotlib绘制数据去重前后的柱状图对比图(在同一个图中显示去重操作之后同一数据集的变化情况)
Python使用matplotlib绘制数据去重前后的柱状图对比图(在同一个图中显示去重操作之后同一数据集的变化情况) #仿真数据 import pandas as pd import numpy a ...
- Python使用matplotlib绘制柱状图(bar plot)实战:水平条形图、垂直条形图、分组条形图、堆叠条形图
Python使用matplotlib绘制柱状图(bar plot)实战:水平条形图.垂直条形图.分组条形图.堆叠条形图 目录
最新文章
- 2019数据安装勾选_宝象课堂丨如何正确安装SOLIDWORKS 2019?
- 三大运营商借5G消息围攻微信,就问张小龙怕不怕
- Java 中 StringBuilder 在高性能用法总结
- 13亿参数,无标注预训练实现SOTA:Facebook提出自监督CV新模型
- Linux后台运行java的jar包,java基础面试笔试题
- 2018年11月27日 分类与集合
- PM2怎么保持Node应用程序永久活动?
- cent os7 安装zookeeper3.6.0
- leetcode 两个排序的中位数 python
- java树遍历算法_Java递归算法实现目录树的遍历
- 数字图像处理笔记⑧——纹理分析
- 对计算机选购的注意事项,购买电脑的一些注意事项
- 综治应急指挥中心建设方案
- 【2018亚太数据中心峰会】黄超:从供到需-中国IDC产业发展的环境分析
- 贪心——国际象棋锦标赛
- ffmpeg安装教程(windows版)
- win10家庭版怎么删除多余的用户
- python string类型的英文句子逆序输出
- GNS3 思科(Cisco)PIX虚拟防火墙简单配置
- 时间复杂度分析:递归算法
热门文章
- 嘉立创板子形状——投板笔记
- 工作汇报怎么写?学会这几招,教你快速升职加薪!
- 电磁波是怎么传播的?
- win10 触摸屏测试软件,Win10 测试版 18970 推送,微软着手改善触摸操作体验
- 使用shiro进行系统身份验证-权限控制,登录界面乱跳
- 仿真软件matlab中有simunik,Simcenter Amesim 2019.1与Matlab/simulink联合仿真
- python xlwings 安装_xlwings runpython安装失败
- 1分钟学会在Java中将PSD转换为PNG等图片格式,你可能差一个它
- 【NOIP】合唱队形
- Bean named 'rateBoardService' is expected to be of but was actually of type 'com.sun.proxy.$Proxy69'