10 欧几里得宏包绘制一次函数图形 悬赏已过期

发布于 2026-03-31 22:09:01

不知不觉间,小朋友已经学到一次函数了。前面平面几何图形在各位大佬们的指导下,磕磕碰碰勉强可以画出来。

今天想请教一下大佬们,如下的图应该怎么画,思路是什么。O(∩_∩)O谢谢

image.png

查看更多

关注者
0
被浏览
344
3 个回答
Sagittarius Rover
Sagittarius Rover 2026-04-01
这家伙很懒,什么也没写!

很简单的办法参考自: https://ask.latexstudio.net/ask/question/8198.html

对于这种分段函数,直接使用tikz用直线绘制即可,你甚至可以很方便的控制颜色,线条样式、粗细等特征:

\documentclass[tikz,border=5pt]{standalone}
\usepackage[fontset=fandol]{ctex}
\usepackage[osf]{libertine} % 我喜欢的一款字体
\begin{document}

\begin{tikzpicture}[
    line cap=round,
    every node/.style={black}
    ]
\draw[-latex] (0,0) -- (6,0) node[below]{t(h)};
\draw[-latex] (0,0) -- (0,6) node[right]{s(km)};

\node[below left] {0};

\foreach \i in {1,...,5}{
    \draw(0,\i) node[left] {\inteval{10*\i}} -- ++(.2,0);
    \draw(\i,0) node[below] {\inteval{\i}} -- ++(0,.2);
}

\draw[magenta,thick] (0,0) 
    -- (1,3) node[left] {A} 
    -- (1.5,3) node[right] {B} 
    -- (2,5) node[above left=-1pt] {C} 
    -- (2.75,5) node[above right=-1pt] {D} 
    -- (5,0) node[above right=-1pt] {E}
    ;
\draw[cyan,dashed,semithick] (0,5) 
    -- (.5,5) node[above] {G}
    -- (3,0) node[above right] {H}
    ;

\draw[cyan,dashed,semithick] (5.75,5.25) -- ++(-1,0) node[left,anchor=east] {小聪};
\draw[magenta,thick] (5.75,4.5) -- ++(-1,0) node[left,anchor=east] {小慧};

\end{tikzpicture}

\end{document}

image.png

当然,这里有个小难点是如何恰好让「B」点相交,我是做了一些斜率的预计算。放轻松,每一行命令的功能都是比较简单的,你可以注释某行代码再编编译看看结果,相信学会这种绘制并不算太难~

Happy TikZing!

shadow
shadow 2026-04-01
这个人懒得不得了,竟然啥也没写

tikz的一些直线命令就可以完成,tikz中应该有些库或者模块专门画函数图像,不过不一定方便。详细可以看pgfmanual. 如果你经常需要画图,这个手册中的一些内容最好学一下,特别是第三部分和第五部分。

Absinthe
Absinthe 2026-04-02
这家伙很懒,什么也没写!

基于 asymptote 的一个方案(仅作为练习,这张图应该更适合 pgfplot 这种可以通过数据绘图的宏包,下面 IgnoreAspect 其实也可以在 tikz 找到对应的方案的,使用 scale 等等 ):
image.png
image.png
完整代码如下:

/*======== 设置(Set) =========*/
settings.outformat="pdf"; 
settings.tex="xelatex"; usepackage("ctex","fontset=fandol"); 
size(7cm,6cm,IgnoreAspect); arrowbar cAr=Arrow(5);
pen cdotted=linetype(new real[] {0,3});
/*======== 定义(Define) =========*/
pair O=(0,0),A=(1,30),B=(1.5,30),C=(2,50),D=(3,50),F=(5,0);
pair G=(0.5,50),H=(3,0);
path cong=(0,50)--G--H;
path hui=O--A--B--C--D--F--H;
/*======== 绘制(Draw) =========*/
draw(cong,cdotted); draw(hui);
draw(Label("\small$t(\mathrm{h})$",Relative(1),S),(0,0)--(6.5,0),cAr);
draw(Label("\small$s(\mathrm{km})$",Relative(1),E),(0,0)--(0,60),cAr);
draw(Label("\small 小聪",W),(5,55)--(6.5,55),cdotted);
draw(Label("\small 小慧",W),(5,45)--(6.5,45));
/*======== 标注(Label) =========*/
for (real t=1; t<=5; t+=1) {
    draw((t,0)--(t,1.5));
    label((string)t,(t,0),S);
}
for (real s=10; s<=50; s+=10) {
    draw((0,s)--(0.25,s));
    label((string)s,(0,s),W);
}
label("$O$",O,SW); label("$A$",A,W); label("$B$",B,E);
label("$C$",C,N); label("$D$",D,NE); label("$F$",F,NE);
label("$G$",G,N); label("$H$",H,NNE);

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览