7.2 pgfplot绘图

 前面我们讲的是用gnuplot来绘制函数图像,对于gnuplot使用得很熟练的人来说,确实比较方便。这里我要介绍另外一种不依赖gnuplot的函数绘制方法,也就是纯tikz方法。这里用到的包是pgfplots,前面讲数据分析时讲过这个包。使用pgfplots绘图,要将图置于axis环境下。

命令语法

  \addplot[参数]{函数}.,主要参数有颜色,定义域等等。
  axis lines=left,是用传统坐标轴代替默认的方框。除了left还有以下取值:right, box, center, none。数学中一般使用center,这样坐标轴的(0,0)点在图正中央。
  axis equal,一般情况下,x轴和y轴比例不是1:1的。这个选项让x轴和y轴强行1:1.

2D举例

我先拿个例子来说:

\documentclass[UTF8, a4paper,12pt]{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{calc,angles,quotes}
\begin{document}
	\begin{tikzpicture}
		\begin{axis}[]
			% density of Normal distribution:
			\addplot [
			black,
			domain=-4:4,
			smooth
			]
			{sinh(x)};
		\end{axis}
	
	\end{tikzpicture}
\end{document} 

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

3D绘图

  对于立体几何研究来说,3D绘图是刚需。3D绘图也简单,就是改用addplot3命令就好了,如我要绘制一个球面,可以这样写代码:

\documentclass[UTF8, a4paper,12pt]{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{width=12cm,compat=1.18}
\begin{document}
	\begin{tikzpicture}
		\begin{axis}[xlabel=x,ylabel=y]
			\addplot3 [black,domain=-2:2,domain y=-2:2,surf]{sqrt(16-x^2-y^2)};
		\end{axis}
	
	\end{tikzpicture}
\end{document} 

  绘制结果如下:
在这里插入图片描述

参数方程3D绘图

  上例的球面是不完全的,如果定义域扩大呢?将上面的x和y的定义域扩大,我们看看效果:

\documentclass[UTF8, a4paper,12pt]{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{width=12cm,compat=1.18}
\begin{document}
	\begin{tikzpicture}
		\begin{axis}[xlabel=x,ylabel=y]
			\addplot3 [black,domain=-4:4,domain y=-4:4,surf]{sqrt(16-x^2-y^2)};
		\end{axis}
	
	\end{tikzpicture}
\end{document} 

  一编译,直接报错了哈,如图:
在这里插入图片描述

  因为 x = 4 , y = 4 x=4,y=4 x=4,y=4的时候,是没有定义域的,这个时候是给负数开根号了,所以报错了,怎么办呢?我们可以用参数方程。复习下球的参数方程:
{ x = r ⋅ s i n ( u ) ⋅ c o s ( v ) y = r ⋅ s i n ( u ) ⋅ s i n ( v ) z = r ⋅ c o s ( u ) \begin{cases} x=r\cdot sin(u)\cdot cos(v)\\ y=r\cdot sin(u)\cdot sin(v)\\ z=r\cdot cos(u) \end{cases} x=rsin(u)cos(v)y=rsin(u)sin(v)z=rcos(u)
  然后用参数方程写代码吧:

\documentclass[UTF8, a4paper,12pt]{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{width=12cm,compat=1.18}
\begin{document}
	\begin{tikzpicture}
		\begin{axis}[xlabel=x,ylabel=y]
			\addplot3 [domain=0:360,domain y=0:360,surf,z buffer=sort,
			variable=\u, variable y=\v](
			{4*sin(u)*cos(v)},
			{4*sin(u)*sin(v)},
			{4*cos(u)});
		\end{axis}
	\end{tikzpicture}
\end{document} 

  这个球还是蛮标准的,给大家看看:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

醒过来摸鱼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值