7.1 gnuplot绘制函数

环境搭建

  在实际的工作中,绘制函数图像是刚需。一般来说,有在线函数图形绘图网站,也有专业软件比如OriginalLab。但是这两者都有天然缺陷,前者功能比较少,后者收费比较高。所以对于程序员来说,最适合的莫过于LaTex。LaTex绘制函数图像需要用到tikz包,而绘制函数图像时,tikz用的是第三方的gnuplot。下面我以正弦函数为例子讲述正弦函数图形的绘制。当然同graphviz一样,Latex也可以不通过tikz这个中间层,直接集成gnuplot。
  但是无论如何都需要下载gnuplot。官方Windows版本下载链接为Gnuplot-windows。但是上述链接在日本,所以网速会非常慢,我上传到了CSDN,下载链接为Gnuplot-windows
  安装完成后,需要将gunplot的bin目录假如到环境变量path中,这样gnuplot命令才会有效。可以简单测试下安装是否成功,如下,输入命令gnuplot,在交互界面输入plot [-4:4] sin(x),绘制一条简单的函数:

PS J:\java-book\latex\plot> gnuplot

        G N U P L O T
        Version 5.5 patchlevel 0    last modified 2022-05-30

        Copyright (C) 1986-1993, 1998, 2004, 2007-2022
        Thomas Williams, Colin Kelley and many others

        gnuplot home:     http://www.gnuplot.info
        mailing list:     gnuplot-beta@lists.sourceforge.net
        faq, bugs, etc:   type "help FAQ"
        immediate help:   type "help"  (plot window: hit 'h')

Terminal type is now 'qt'
Encoding set to 'cp1252'.
gnuplot>
(process:6924): GLib-GIO-WARNING **: 15:00:55.036: Unexpectedly, UWP app `HaukeGtze.7-ZipFileManagerUnofficial_1.2107.2.0_x64__6bk20wvc8rfx2' (AUMId `HaukeGtze.7-ZipFileManagerUnofficial_6bk20wvc8rfx2!zFM.exe') supports 36 extensions but has no verbs
plot [-4:4] sin(x)
gnuplot>

  随后会弹出一个GUI框,如下图表示环境搭建成功:
在这里插入图片描述
  搭建好环境后,我介绍四种gnuplot与LaTex集成的方式。

命令方式

  如果是简单画一个正弦函数,代码很简单:

\documentclass[UTF8, a4paper,12pt]{article}
\usepackage{tikz}
\begin{document}
	\begin{tikzpicture}
		\draw [smooth,domain=0:7] plot function{sin(x)};
	\end{tikzpicture}
\end{document}

  效果如下:
在这里插入图片描述
  但是上述函数是没有坐标系的。下面就加上坐标系:

\documentclass[UTF8, a4paper,12pt]{article}
\usepackage{tikz}
\begin{document}
	\begin{tikzpicture}
		\draw [<->,thick] (0,2) node (yaxis) [above] {$y$}
		|- (7,0) node (xaxis) [right] {$x$};
		\draw [smooth,domain=0:7] plot function{sin(x)};
		
		% draw x ,y points (Values)
		\foreach \x in {0,1,2,3,4,5,6,7}
		\draw (\x cm,1pt) -- (\x cm,-1pt) node[anchor=north] {$\x$};
		\foreach \y in {1,2}
		\draw (1pt,\y cm) -- (-1pt,\y cm) node[anchor=east] {$\y$};
	\end{tikzpicture}
\end{document}

  加上坐标系效果就好看多了:
在这里插入图片描述

PDF方式

  GP是gnuplot的简称,它的代码文件后缀没有统一的规定,一般以.gp或.gnuplot为后缀,我以正弦函数为例子,简单写一个sin.gp文件,内容如下:

set terminal pdf
set output "sin.pdf"
plot [-4:4] sin(x)

  在操作系统终端执行命令 gnuplot .\sin.gp就可以生成pdf文件了。随后我们将这个文件包含进我们的tex文件,如以下代码:

\documentclass[UTF8, a4paper,12pt]{article}
\usepackage{graphicx}
\begin{document}
 \includegraphics{./sin.pdf}
\end{document}

  效果如图:
在这里插入图片描述

EPS方式

  这里我换个例子,用双曲正弦为例子,先写个文件sinh.gp,写入以下内容:

set terminal epslatex
set output "sinh.tex"
plot [-4:4] sinh(x)

  用命令生成tex文件和eps文件后,就可以在LaTex中引用了,如以下代码:

\documentclass[UTF8, a4paper,12pt]{article}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage[cp1252]{inputenc}
\begin{document}
 \include{./sinh.tex}
\end{document}

  编译后效果如下:
在这里插入图片描述

嵌入方式

 有时候不需要这么麻烦,我们可以直接在tex文档中直接嵌入gnuplot代码,如下列LaTex代码:

\documentclass[UTF8, a4paper,12pt]{article}
\usepackage{tikz}
\usepackage{ctex}
\usepackage{gnuplottex}
\usetikzlibrary{calc,angles,quotes}
\begin{document}
	双曲正弦与双曲余弦
	\begin{figure}
		\begin{gnuplot}[terminal=pdf,terminaloptions=color dashed]
			plot [-4:4] sinh(x),cosh(x)
		\end{gnuplot}
	\end{figure}
\end{document} 

  编译时它会调用gnuplot,编译为pdf图片,然后再引入最终的pdf文档中,效果如图:
在这里插入图片描述

  目前主流就三种方式,其余的,诸如png方式我就不再赘述了。但是我不建议使用第三种,最好用前两种。道理很简单,假如有一天要转为markdown呢?所以使用前两种有天然的好处,迁移是图片还能被兼容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醒过来摸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值