【漫漫科研路\pgfplots】画局部放大图
在科研论文写作中,我们经常需要放大局部图片来显示细节,即绘制图中图。在Matlab中可以使用magnify或则axes函数,网上有很多例子,这里不再赘述。本文主要讲解如何使用tikz/pgfplots来画局部放大图中图。
绘制局部放大图,需要使用到spy宏包,本文主要参考pgfplots手册。下面给出一个最简单的实例,具体代码如下:
\documentclass[10pt, final, journal, twocolumn, oneside]{IEEEtran}%!TEX program = xelatex
% !TEX encoding = UTF-8 (utf8)
%!TEX spellcheck
\def\pgfsysdriver{pgfsys-dvipdfmx.def}
\usepackage{tikz}\usepackage{pgfplots}
\usetikzlibrary{spy} %
\pgfplotsset{width=7cm,compat=1.14}\begin{document}\begin{tikzpicture}[spy using outlines= {circle, magnification=6, connect spies}]
% define the shape of spy: circle or rectangle
\begin{axis}[no markers,grid=major, every axis plot post/.append style={thick}]\addplot coordinates {(0, 0) (0, 0.9) (1, 0.9) (2, 1) (3, 0.9) (80, 0)}; \addplot+ [line join=round] coordinates {(0, 0) (0, 0.9) (2, 0.9) (3, 1) (4, 0.9) (80, 0)}; \addplot+ [line join=bevel] coordinates {(0, 0) (0, 0.9) (3, 0.9) (4, 1) (5, 0.9) (80, 0)};\addplot+ [miter limit=5] coordinates {(0, 0) (0, 0.9) (4, 0.9) (5, 1) (6, 0.9) (80, 0)};\coordinate (spypoint) at (3,1);% The point to be magnified
\coordinate (magnifyglass) at (60,0.7);% The point where to see
\end{axis}\spy [blue, size=2.5cm] on (spypoint) in node[fill=white] at (magnifyglass);
\end{tikzpicture}
\end{document}
结果如下:
代码简单易懂,也给出了部分注释。为了使得更加个性化,我们可以修改放大图的轮廓,或则背景色,具体代码如下:
\documentclass[10pt, final, journal, twocolumn, oneside]{IEEEtran}%!TEX program = xelatex
% !TEX encoding = UTF-8 (utf8)
%!TEX spellcheck
\def\pgfsysdriver{pgfsys-dvipdfmx.def}
\usepackage{tikz}\usepackage{pgfplots}
\usetikzlibrary{spy} %
\pgfplotsset{width=7cm,compat=1.14}\begin{document}
\begin{tikzpicture}[spy using overlays= {rectangle, magnification=6, connect spies}]
% define the shape of spy: circle or rectangle
\begin{axis}[no markers,grid=major, every axis plot post/.append style={thick}]\addplot coordinates {(0, 0) (0, 0.9) (1, 0.9) (2, 1) (3, 0.9) (80, 0)}; \addplot+ [line join=round] coordinates {(0, 0) (0, 0.9) (2, 0.9) (3, 1) (4, 0.9) (80, 0)}; \addplot+ [line join=bevel] coordinates {(0, 0) (0, 0.9) (3, 0.9) (4, 1) (5, 0.9) (80, 0)};\addplot+ [miter limit=5] coordinates {(0, 0) (0, 0.9) (4, 0.9) (5, 1) (6, 0.9) (80, 0)};\coordinate (spypoint) at (3,1);% The point to be magnified
\coordinate (magnifyglass) at (60,0.7);% The point where to see
\end{axis}\spy [green,size=2.5cm] on (spypoint) in node at (magnifyglass);
\end{tikzpicture}
\end{document}
显示效果如下:
由上图可以看到,相比于Matlab,这里局部放大图更加灵活和个性化。但是Matlab的局部放大图一般都有坐标轴,方便查看局部图的值大小。在Tikz/pgfplots中利用Spy宏包实现相同的效果比较困难。但是我们可以另辟蹊径: 只需要利用node,在node中重新画一个图,只是自己设置横纵坐标的值,从而实现局部放大。具体代码实现如下:
\documentclass[10pt, final, journal, twocolumn, oneside]{IEEEtran}%!TEX program = xelatex
% !TEX encoding = UTF-8 (utf8)
%!TEX spellcheck
\def\pgfsysdriver{pgfsys-dvipdfmx.def}
\usepackage{tikz}\usepackage{pgfplots}
\usetikzlibrary{spy} %
\pgfplotsset{width=7cm,compat=1.14}\begin{document}
\begin{tikzpicture}[pin distance=1.5cm]
\begin{axis}[no markers,grid=major, every axis plot post/.append style={thick}]\addplot coordinates {(0, 0) (0, 0.9) (1, 0.9) (2, 1) (3, 0.9) (80, 0)}; \addplot+ [line join=round] coordinates {(0, 0) (0, 0.9) (2, 0.9) (3, 1) (4, 0.9) (80, 0)}; \addplot+ [line join=bevel] coordinates {(0, 0) (0, 0.9) (3, 0.9) (4, 1) (5, 0.9) (80, 0)};\addplot+ [miter limit=5] coordinates {(0, 0) (0, 0.9) (4, 0.9) (5, 1) (6, 0.9) (80, 0)};\coordinate (spy_point) at (axis cs:0,1);
\end{axis}
%plot the magnified figure using a node
\node[pin=-5:{%\begin{tikzpicture}\begin{axis}[no markers, thick,scale=0.8,tiny,xlabel={x},ylabel={y},xmin=0,xmax=8,ymin=0.85,ymax=1.05,enlargelimits,]\addplot coordinates {(0, 0) (0, 0.9) (1, 0.9) (2, 1) (3, 0.9) (80, 0)}; \addplot+ [line join=round] coordinates {(0, 0) (0, 0.9) (2, 0.9) (3, 1) (4, 0.9) (80, 0)}; \addplot+ [line join=bevel] coordinates {(0, 0) (0, 0.9) (3, 0.9) (4, 1) (5, 0.9) (80, 0)};\addplot+ [miter limit=5] coordinates {(0, 0) (0, 0.9) (4, 0.9) (5, 1) (6, 0.9) (80, 0)};\end{axis}\end{tikzpicture}%
}] at (spy_point) {};
\end{tikzpicture}
结果如下:
【漫漫科研路\pgfplots】画局部放大图相关推荐
- 【漫漫科研路\pgfplots】克服绘制色温图时,数据量大出现的内存限制
在科研论文写作中,经常会遇到画色温图,3D图.此时一般输入的数据量比较大,导致在Latex中使用Tikz画图时出现内存不足的情况.常常报错如下: ! TeX capacity exceeded, so ...
- 【漫漫科研路\pgfplots】子图的多种画法
在科研论文写作中,有时候为了横向.纵向对比或者节省空间,我们需要画子图,在MATLAB中可以通过subplot命令来实现.在Latex中有以下几种方法进行子图的绘制: - 使用subfig宏包(有可能 ...
- 【漫漫科研路\pgfplots】多个子图共用一个图例
十月底,投完会议之后,便对科研写作方面遇到的问题进行了探索.问题主要有: 问题: 文献管理问题:在写论文的过程中,经常要引用他人文献,这时需要费时去寻找.另一方面,有时想要查看曾经读到的某篇文章提到的 ...
- 【漫漫科研路\PythonTikz】画神经网络相关图
前一篇文章[图解例说机器学习]神经网络中,由于篇幅有限,我们只介绍了其理论部分.作为补充,本文主要介绍文中所有图像的绘制(使用Tikz或者Python).对于神经网络中的框架图 (例如神经元,神经网络 ...
- 【漫漫科研路\CC++】CPLEX解SOCP问题
IBM CPLEX可以解SOCP问题,但是需要先将这个SOCP问题化为指定的格式.本文首先介绍SOCP问题,然后举例介绍如何将SOCP问题转化为CPLEX认可的输入格式并求解. SOCP的介绍 关于S ...
- 高文院士:从“乡村教师”到人工智能掌舵者的40年科研路
成为一名工程师,是高文从小以来的梦想.在那个物质匮乏的年代,怀着对梦想的执着,高文从初中开始,便和周围的朋友一起玩无线电.摆弄收音机.凭借着这份单纯的执着,从哈尔滨工业大学计算机应用博士.东京大学电子 ...
- Linux那些事儿 之 戏说USB(2)漫漫辛酸路
USB的一生充满了PK,并在PK中发展,1.0.1.1.2.0,漫漫辛酸路,一把辛酸泪. 这张表是从USB2.0 spec里直接拿过来的,可以看出,它的高速模式最高已经达到了480Mbps,即60MB ...
- 重磅直播|嵌入式开发漫漫之路—从小白到技术骨干
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 大家好,本公众号现已开启线上视频公开课,主讲人通过B站直播间,对3D视觉领域相关知识点进行讲解,并在微 ...
- 兰艳艳:理想温暖10年科研路,女性可以柔和,更要自信、专业 | 妇女节特辑...
她力量 近年来,"她"力量正在科学家群体中快速升温. 在一年一度的妇女节到来之际,智源社区选取了五位颇具代表性的女性科学家,进行了深度访谈.在她们中,有人选择食物图像识别,对选择的 ...
最新文章
- FPGA之异步时钟、同步时钟并存同步问题
- 关于建立完整商业应用软件框架库的设想
- 一个完整的操作UI线程的例子,用到了多种方式
- boost::subgraph用法的测试程序
- 【机器学习】降维技术-PCA
- 前端学习(3124):react-hello-react之对props进行限制
- Qt文档阅读笔记|Qt实践| HTTPS知识点-获取某站点SSL证书
- ASP.NET中获取URL重写前的原始地址
- 用js判断.net版本
- Jboss 中配置 Oracle数据源
- php pdo 抛出异常模式,php实现的PDO异常处理操作分析
- 利用python进行身份证号码大全_身份证号码设置显示格式,我用了最笨的办法,你有什么好办法吗?...
- 计算几何 - 你绝对找不到比这更好的计算几何
- dell 如何给raid分区_如何在 UEFI 配置的系统中访问 RAID 控制器设置
- VideoMAE 论文阅读
- 看到大神移植系统了,我来整理下市面上的系统...
- php下载安装方法,phpstudy 2016免费版-php开发环境下载 v2016.11.03 附带安装教程 - 安下载...
- PotPlayer播放蓝光片源及如何硬解码和音频源码输出
- Linux开发工具(3)——gcc/g++
- 网段、网络地址、广播地址、子网掩码的计算方法
热门文章
- 计算机基础知识结束语,公文写作和计算机基础知识.doc
- 航司和机场将如何应用物联网技术?
- 尚志一中2021年高考成绩查询,2021-2022学年黑龙江省哈尔滨市呼兰一中、阿城二中、宾县三中、尚志五中联考高二(上)期中英语试卷(完美版).pdf...
- 微信小机器人 wxpy模块,自动化发送消息
- C语言编写简单的朗读小工具
- 字节跳动三面面试整理
- 代码详解设计模式汇总
- Grade for Android 之一:Groovy概述
- python double free_double free or corruption的原因
- opencv学习-形态学操作应用-提取图片中的文字