TikZ 플롯이 너무 장황함

TikZ 플롯이 너무 장황함

다음 플롯을 표현하는 더 간결한 방법이 있는지 궁금합니다(저는 일반 형식을 사용하고 있습니다).

\input tikz
\tikzpicture
  \draw[help lines, ystep=.5] (-.2,-10) grid (12.5,15);
  \draw[->] (0, -10) to (0, 15) node[above] {$y$};
  \draw[->] (0, 0) to (12.5, 0) node[right] {$x$};
  \draw (1,-.5) node {$1$};
  \draw (2,-.5) node {$2$};
  \draw (3,-.5) node {$3$};
  \draw (4,-.5) node {$4$};
  \draw (5,-.5) node {$5$};
  \draw (6,-.5) node {$6$};
  \draw (7,-.5) node {$7$};
  \draw (8,-.5) node {$8$};
  \draw (9,-.5) node {$9$};
  \draw (10,-.5) node {$10$};
  \draw (11,-.5) node {$11$};
  \draw (12,-.5) node {$12$};

  \draw (-.5,-10) node {$-20$};
  \draw (-.5,-9) node {$-18$};
  \draw (-.5,-8) node {$-16$};
  \draw (-.5,-7) node {$-14$};
  \draw (-.5,-6) node {$-12$};
  \draw (-.5,-5) node {$-10$};
  \draw (-.5,-4) node {$-8$};
  \draw (-.5,-3) node {$-6$};
  \draw (-.5,-2) node {$-4$};
  \draw (-.5,-1) node {$-2$};
  \draw (-.5,0) node {$0$};
  \draw (-.5,1) node {$2$};
  \draw (-.5,2) node {$4$};
  \draw (-.5,3) node {$6$};
  \draw (-.5,4) node {$8$};
  \draw (-.5,5) node {$10$};

  \draw (0,-10) circle (2pt);
  \draw (1,-9) circle (2pt);
  \draw (2,-8) circle (2pt);
  \draw (3,-7) circle (2pt);
  \draw (4,-6) circle (2pt);
  \draw (5,-5) circle (2pt);
  \draw (6,-4) circle (2pt);
  \draw (7,-3) circle (2pt);
  \draw (8,-2) circle (2pt);
  \draw (9,-1) circle (2pt);
  \draw (10,0) circle (2pt);
  \draw (11,1) circle (2pt);
  \draw (12,2) circle (2pt);
\endtikzpicture
\bye

너무 커서 한 페이지에 다 들어가지 않네요.

답변1

LaTeX 버전은 다음과 같습니다.

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \draw[help lines, ystep=.5] (-.2,-10) grid (12.5,15);
  \draw[->] (0, -10) to (0, 15) node[above] {$y$};
  \draw[->] (0, 0) to (12.5, 0) node[right] {$x$};
  \foreach \X in {0,...,12}
  {\ifnum\X>0
  \node at (\X,-0.5) {$\X$};
  \fi
  \draw (\X,-10+\X) circle (2pt); }
  \foreach \Y in {-20,-18,...,10}
  {\node at (-0.5,\Y/2) {$\Y$};}
\end{tikzpicture}
\end{document}

놀랍게도 다음은 다음과 같이 실행됩니다.pdftex

\input tikz
\tikzpicture
\draw[help lines, ystep=.5] (-.2,-10) grid (12.5,15);
  \draw[->] (0, -10) to (0, 15) node[above] {$y$};
  \draw[->] (0, 0) to (12.5, 0) node[right] {$x$};
  \foreach \X in {0,...,12}
  {\ifnum\X>0
  \node at (\X,-0.5) {$\X$};
  \fi
  \draw (\X,-10+\X) circle (2pt); }
  \foreach \Y in {-20,-18,...,10}
  {\node at (-0.5,\Y/2) {$\Y$};}
\endtikzpicture
\bye

답변2

그래서 시행착오를 겪으면서 밤새 설명서를 읽은 후, 무언가에 해를 끼치거나 처벌을 가할 수 있는 초자연적인 힘을 불러일으키는 엄숙한 발언을 많이 한 후, 이제 모두 후회하게 되었고, 마침내 나는 승리하여 다음과 같은 결론을 내렸습니다.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{datavisualization, datavisualization.formats.functions}
\begin{document}
\begin{tikzpicture}
  \datavisualization[
    school book axes
    , x axis={unit length=5mm}
    , y axis={
      unit length=5mm
      , ticks={step=2}
      , grid
      , scaling = min at 0cm and max at 5cm
    }
    , visualize as line
  ]
  data[format=function] {
    var x : interval [0:12];
    func y = (\value x - 10) * 2;
  };
\end{tikzpicture}
\end{document}

팔! 펑! 샤잠! 신성한 함수 데이터 형식, 배트맨! 이것은 정말 좋은 일입니다.

내가 발견한 유일한 문제는 일반 형식에서는 작동하지 않아 사용자가 깨달음의 낮은 수준으로 내려가도록 강요한다는 것입니다.

관련 정보