Vẽ đồ thị chung

Sep 21 2020

Tôi muốn tạo một đồ thị tổng quát để minh họa một điểm (ví dụ: mx+bvà hiển thị blà điểm giao nhau và mlà độ dốc). Tôi hiểu rằng tôi có thể tạo một biểu đồ với cách đặt tên trục thủ công, nhưng tôi cũng muốn có thể định vị nhãn btại điểm giao nhau, gắn nhãn một vài điểm và gắn nhãn mlà độ dốc. Tôi hiểu rằng tôi có thể phải nhập các giá trị số nguyên không liên quan, nhưng việc gắn nhãn là điều quan trọng.

Như một phần thưởng bổ sung, tôi cũng muốn có thể chỉ ra cách tôi có thể điều chỉnh một số tính năng nhất định và dòng sẽ thay đổi. (có lẽ cũng là một nhãn trên mũi tên nhưng tôi quên đưa nó vào bản phác thảo)

Tôi đã đính kèm một vài bản phác thảo nhanh về ý tưởng chung bên dưới để rõ ràng hơn. Làm thế nào tôi đạt được điều này?

Trả lời

3 Thruston Sep 21 2020 at 10:16

Một giải pháp thay thế trong Metapost được gói gọn trong luamplib. Biên dịch cái này với lualatex.

Theo liên kết ở trên để xem các hướng dẫn và sách hướng dẫn giải thích cách hoạt động của MP.

\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
    numeric u, m, m', b, b';
    u = 1.44cm;
    b = 3.6u;  b' = b + 7/8 u;
    m = -1;  m' = 7/8 m; 

    path xx, yy;
    xx = (left -- 5 right) scaled u;
    yy = xx rotated 90;

    numeric minx, maxx; path ff, gg;
    minx = xpart point 1/16 of xx;
    maxx = xpart point 15/16 of xx;
    ff = (minx, minx * m + b) -- (maxx, maxx * m + b); 
    gg = (minx, minx * m' + b') -- (maxx, maxx * m' + b'); 

    z0 = point 0.4 of ff;
    z1 = point 0.54 of ff;
    z1 0 = whatever [point 0 of gg, point 1 of gg]; x1 0 = x0;
    z1 1 = whatever [point 0 of gg, point 1 of gg]; x1 1 = x1;

    forsuffixes @=0, 1:
        draw (x@, 0) -- z@ -- (0, y@) dashed evenly scaled 3/4;
        draw z@ -- z1 @ -- (0, y1 @) dashed withdots scaled 1/2;
        label.bot("$x_{" & decimal @ & "}$", (x@, 0));
        label.lft("$y_{" & decimal @ & "}$", (0, y@));
        label.lft("$y'_{" & decimal @ & "}$", (0, y1 @));
    endfor

    draw ff withcolor 2/3 red;
    draw gg withcolor 3/4 blue;
    drawarrow xx; drawarrow yy;

    label.rt("$x$", point 1 of xx);
    label.top("$y$", point 1 of yy);

    dotlabel.urt("$b$", (0, b));
    dotlabel.urt("$b'$", (0, b'));

    draw thelabel("slope: $m=" & decimal m & "$", 7 up)
        rotated angle (1, m) shifted point 2/3 of ff;
    draw thelabel("slope: $m'=" & decimal m' & "$", 7 up)
        rotated angle (1, m') shifted point 2/3 of gg;
        
endfig;
\end{mplibcode}
\end{document}

Cú pháp để lấy y'điểm là một chút phức tạp; nhưng MP cho phép khoảng trắng giữa các phần tử của một biến, suffixdo đó z0 1là tên hợp lệ cho một biến, và zphép macro thông thường , có nghĩa là x0 1và y0 1tham chiếu đến các phần x và y như bình thường.

3 ferahfeza Sep 21 2020 at 09:43

Đối với một điểm bắt đầu và chỉ cho hình ảnh đầu tiên.

\documentclass[margin=3mm]{standalone}
\usepackage{tikz}

\newcommand{\LinearEquation}
{%
\pgfmathsetmacro{\Slopef}{-1}% slope of the line 1
\pgfmathsetmacro{\Interceptf}{6}% intercept
\pgfmathsetmacro{\Slopes}{-0.9}% slope of the line 2
\pgfmathsetmacro{\Intercepts}{5}% intercept
\begin{tikzpicture}[>=latex]
\draw[->] (-1,0)--(8.3,0)node[below]{$x$};
\draw[->] (0,-1)--(0,8.3)node[left]{$y$};
\draw[very thick,red, domain=0:5] plot (\x,\Slopef*\x+\Interceptf);
\node at (0,\Interceptf)(b)[left]{$b$} ;
\def\x1{1.5}
\def\y1{\Slopef*\x1+\Interceptf}
\draw [dashed,blue](\x1,0)node[below]{$x1$}--(\x1,\y1)--(0,\y1)node[left]{$y1$};
\def\x2{3}
\def\y2{\Slopef*\x2+\Interceptf}
\draw [dashed,blue](\x2,0)node[below]{$x2$}--(\x2,\y2)--(0,\y2)node[left]{$y2^\prime$};

\draw[very thick,red, domain=0:5] plot (\x,\Slopes*\x+\Intercepts);
\node at (0,\Intercepts)(b)[left]{$b$} ;
\def\x1{1.5}
\def\y1{\Slopes*\x1+\Intercepts}
\draw [dashed,blue](\x1,0)node[below]{$x1$}--(\x1,\y1)--(0,\y1)node[left]{$y1^\prime$};
\def\x2{3}
\def\y2{\Slopes*\x2+\Intercepts}
\draw [dashed,blue](\x2,0)node[below]{$x2$}--(\x2,\y2)--(0,\y2)node[left]{$y2$};
\draw [<-](2.8,3.5)--(5,3.5)node[right]{Slope $m$};
\draw [<-](2.9,2.5)--(5,2.5)node[right]{Slope $m^\prime$};
\end{tikzpicture}%
}

\begin{document}
\LinearEquation
\end{document}