百科问答小站 logo
百科问答小站 font logo



请问这些示意图在LaTeX中怎么画出来? 第1页

  

user avatar   bo-xue-duo-wen-63 网友的相关建议: 
      

谢邀!

这种不是特别复杂的图可以在LaTeX中使用TikZ绘制。上面两个图是一个类型的,都是一个曲线图中有一条曲线与切线;下面的图是另一种类型,虽然是立体图形,但可以通过绘制基本元素——椭圆和线段来完成。

先来看第一个图形,为了方便绘制,最外侧的封闭曲线可以用椭圆来代替,绿色的曲线可以用

       path[deepgreen](a)edge[bend left](b);     

来完成。另外绘制“近似”的切线就非常简单了。代码如下:

       documentclass[border=0.3cm]{standalone} usepackage{amsmath} usepackage{tikz} usepackage{xcolor} definecolor{deepgreen}{cmyk}{0.99998,0,1,0} egin{document} egin{tikzpicture} draw[rotate=40](0,0)ellipse(2 and 1.2); path[deepgreen] (-1, -1) edge [bend left] (1.2,0.6); 
ode at(1.2,0.6)[right]{scriptsize( lambda )}; fill(-0.2,0.07)circle(1pt)node[below]{scriptsize( p )}; draw[-latex,thick](-0.2,0.07)--(0.7,0.8)node[left,xshift=-0.1cm]{scriptsize( X )}; 
ode at(0,-1)[right]{scriptsize( M )}; end{tikzpicture} end{document}     

编译效果如下:

题主说希望用一般一点的封闭曲线表示这个流形,那在这里我提供另一种普遍使用的方法:

首先在下面的网站中绘制一个封闭曲线,注意这里我们使用的是Bézier曲线的命令,四个控制点的Bézier可以模拟出大多数形状的封闭曲线。网站如下:

下面是网站的截图:

绘制好大致形状之后可以直接导出LaTeX的TikZ绘图代码,内容如下:

       	ikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt         egin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1] draw   (120.33,71.5) .. controls (159.33,69.5) and (180.33,82.5) .. (183.33,124.5) .. controls (186.33,166.5) and (174.33,199.5) .. (137.33,242.5) .. controls (100.33,285.5) and (13.33,257.5) .. (34.33,195.5) .. controls (55.33,133.5) and (81.33,73.5) .. (120.33,71.5) -- cycle ; end{tikzpicture}     

然后我们将tikzpicture中的代码放在一个scope(子图)环境中,并通过 xscale, yscale, xshift, yshift 等命令调节这个scope的大小与位置,使其能够与其他元素位置吻合。我调整完后完整代码如下:

       documentclass[border=0.3cm]{standalone} usepackage{amsmath} usepackage{tikz} usepackage{xcolor} definecolor{deepgreen}{cmyk}{0.99998,0,1,0} 	ikzset{every picture/.style={line width=0.75pt}}  egin{document} egin{tikzpicture} egin{scope}[x=0.75pt,y=0.75pt,yscale=-0.8,xscale=0.8,xshift=-1cm,yshift=-5cm,rotate=20] draw   (119,71.5) .. controls (158,69.5) and (179,82.5) .. (182,124.5) .. controls (185,166.5) and (173,199.5) .. (136,242.5) .. controls (99,285.5) and (12,257.5) .. (33,195.5) .. controls (54,133.5) and (80,73.5) .. (119,71.5) -- cycle ; end{scope} %draw[rotate=40](0,0)ellipse(2 and 1.2); path[deepgreen] (-1, -1) edge [bend left] (1.2,0.6); 
ode at(1.2,0.6)[right]{scriptsize( lambda )}; fill(-0.2,0.07)circle(1pt)node[below]{scriptsize( p )}; draw[-latex,thick](-0.2,0.07)--(0.7,0.8)node[left,xshift=-0.1cm]{scriptsize( X )}; 
ode at(0,-1)[right]{scriptsize( M )}; end{tikzpicture} end{document}     

编译效果如下图:

这样就没有使用椭圆表示啦!

第二个图其实同理,不过最外封闭曲线可以通过

       draw[smooth cycle] plot coordinates{(a)(b)...(x)};     

来绘制由多个点控制的光滑封闭曲线,其余的内容和第一个图同理。

第三个图中的基本元素就只有椭圆弧和线段,绘制完整的椭圆可以通过命令:

       draw (a,b) ellipse (xcm and ycm);     

其中(a,b)表示椭圆的中心坐标,x和y分别表示椭圆的长轴和短轴长度;如果绘制椭圆弧的话,可以用命令:

       draw (a,b) arc (m:n: xcm and ycm);     

注意这里的(a,b)表示椭圆弧的起点坐标,m,n表示椭圆弧中参数的取值范围,x,y同样表示椭圆的长轴和短轴。绘制第三个图的代码如下:

       documentclass[border=0.5cm]{standalone} usepackage{pgfplots} usetikzlibrary{arrows} egin{document} egin{tikzpicture}[thick] draw (-2.87,3.94) ellipse (2.8cm and 0.88cm); draw (-5.52,-1.92) arc (164:376: 2.8cm and 0.88cm); draw [dashed] (-0.14,-1.92) arc (16:164: 2.8cm and 0.88cm); draw (-5.55,3.68)-- (-0.14,-1.92); draw (-5.52,-1.92)-- (-0.19,3.69); draw[blue,-stealth](-2.85,0.9)--(-1,2.84)node[black,right]{null}; draw[blue,-stealth](-2.85,0.9)--(-0.8,0)node[above right,black]{spacelike}; draw[blue,-stealth](-2.85,0.9)--(-4,3)node[right,yshift=-0.1cm,black]{timelike}; end{tikzpicture} end{document}     

编译效果如下图:

总之,TikZ这种工具,需要多看手册,多尝试,多练习,熟能生巧,才能画出好看的图片。




  

相关话题

  请问这些示意图在LaTeX中怎么画出来? 
  如何在论文中画出漂亮的插图? 
  如何优雅地使用LaTeX写论文? 
  matplotlib怎么强制让坐标轴和网格线重叠? 
  如何使用LaTeX让自己不乱? 
  你见过最美的 MATLAB 绘图是什么? 
  如何做到像使用 LaTeX 那样优雅地使用 Word? 
  如何优雅地使用LaTeX写论文? 
  LaTeX 相对于 Word 有什么优势? 
  未来有没有可能使用HTML完全替代Word,Latex等文档格式? 

前一个讨论
数学家 Elias M. Stein 逝世,如何总结他的工作?
下一个讨论
如何评价2021年第62届IMO试题?





© 2024-09-20 - tinynew.org. All Rights Reserved.
© 2024-09-20 - tinynew.org. 保留所有权利